Как стать автором
Обновить
41
0
d0lfin @d0lfin

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

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

Алгоритм быстрого нахождения похожих изображений

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

Введение


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

Базовый Алгоритм


Мера схожести изображений


При сравнении похожих изображений первым встает вопрос: что считать мерой схожести изображений? Очевидно, что это величина имеет значение обратное различию изображений друг от друга. Следственно нужно выбрать некую метрику, характеризующую различие изображений друг от друга. Тогда схожими изображениями будут считаться изображения, отличие между которыми меньше некоторого порога. Для изображений с одинаковыми габаритами, обычно такой мерой различия служит среднеквадратическое отклонение пикселей одного изображения от другого. Хотя конечно, нам ни что не мешает выбрать другую метрику, например усредненную абсолютную разность пикселей изображений друг от друга.
Читать дальше →
Всего голосов 57: ↑55 и ↓2+53
Комментарии20

Основы разработки игр для iPhone с использованием Cocos2D

Время на прочтение6 мин
Количество просмотров28K
Привет, Хабражитель!

Многие люди мечтают научиться писать программы, игры, но не получается по многим причинам. Я, изначально, не хотел ничего писать потому что не было интересной платформы, и я был еще слишком маленьким. Потом все изменилось. Наступила новая эра в телефонной индустрии – появился iPhone. Я сразу, как о нем услышал, загорелся желанием его приобрести. Платформа сразу понравилась, кнопок и стилуса нет – самое то для игр.
Программы я начал писать в ноябре 2009, если их можно назвать программами :). Многие спрашивают как я учился – на видео-уроках с YouTube, а как еще? Читать непонятные уроки по iPhone SDK? В тот момент я загорелся идеей учить таких же как я – начал записывать видео на YouTube новым для меня темам.
Если интересно: http://bit.ly/pdyoutube. Потом все пошло и поехало, сам стал лучше программировать и запоминалось все намного лучше. Не буду писать очень длинное вступление – перейдем к самому интересному.

Всегда хотел делать игры, но на пустом Xcode не очень удобно и понятно. Стал выбирать платформу (фреймворк) для разработки игр под iPhone, iPad. Мой выбор остановился на Cocos2D. Многие спросят почему – он очень простой в использовании, очень! Он еще и бесплатный и часто обновляемый!

Читать дальше →
Всего голосов 55: ↑48 и ↓7+41
Комментарии17

Разработка игрового приложения под iPhone

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

Разработка игрового приложения под iPhone



Начало

В октябре 2008 года на очередной встрече с двумя друзьями, я узнал, что оба они занимаются разработками игр под iPhone. В то время я уже имел почти законченный shareware проект под Windows.
Загоревшись желанием портировать его под iPhone, я начал работать в данном направлении.

Цели

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

Шаг Первый — Настройка окружения и компилятора под Windows, а точнее под Cygwin

Было потрачено где-то около месяца на сборку toolchain под Cygwin. Результатом этого был огромный makefile для сборки toolchain и скомпилированное приложение HelloWorld, которое негде было запустить, так как девайса у меня не было. Когда я говорю что это заняло месяц, это не означает что я месяц по 8 часов в день работал над этим, в основном работа велась по выходным и после работы. Много времени уходило на перекомпиляцию, фикс проблем с путями, фикс проблем компиляции и настройки среды CygWin (только Cygwin я переставлял раза три).

Читать дальше →
Всего голосов 100: ↑88 и ↓12+76
Комментарии60

Анонимности нет, смиритесь! (русские субтитры)

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

Выступление Стива Рамбама на конференции Hackers On Planet Earth (часть I)


Это выступление Стива Рамбама на последней конференции H.O.P.E. (Hackers On Planet Earth)

Стив выступает на каждой хакерской конференции H.O.P.E. с 1994 года.
Если вы не знаете про Стива и не видели его выступления — обязательно посмотрите это видео.

Покажите его тем, кто плохо знаком с миром IT: бухгалтерам, продажникам, маркетологам…
Обычным людям.

Видео с русскими субтитрами на Universal Subtitles
(хабр не позволил вставить скрипт):
Ctrl+ www.amara.org/ru/videos/YSEgofMg2wgv/info/steven-rambam-privacy-is-dead-get-over-it-part-1

Это же видео без наложенных субтитров, для англоговорящих:

Читать дальше →
Всего голосов 86: ↑77 и ↓9+68
Комментарии116

Создание расширения FireFox для начинающих

Время на прочтение8 мин
Количество просмотров48K
В данной статье представлена пошаговая инструкция по разработке простейшего расширения для FireFox.
Это частичный перевод оригинальной статьи.

Это не моя статья, а моего друга (его мыльце: templar8@gmail.com). Он очень хочет попасть на Хабр. У меня самого не хватает кармы для инвайта.
Текст статьи
Всего голосов 104: ↑94 и ↓10+84
Комментарии33

‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 1)

Время на прочтение5 мин
Количество просмотров21K
Это очень поверхностное руководство, которое только познакомит с базовым функционалом Play framework на примере создания приложения ‘Hello World’.

Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии8

Пишем первое приложение для Android

Время на прочтение8 мин
Количество просмотров556K
В любом деле самое сложное — это начало. Часто бывает тяжело войти в контекст, с чем столкнулся и я, решив разработать свое первое Android-приложение. Настоящая статья для тех, кто хочет начать, но не знает с чего.

Статья затронет весь цикл разработки приложения. Вместе мы напишем простенькую игру “Крестики-Нолики” с одним экраном (в ОС Android это называется Activity).

Отсутствие опыта разработки на языке Java не должно стать препятствием в освоении Android. Так, в примерах не будут использоваться специфичные для Java конструкции (или они будет минимизированы на столько, на сколько это возможно). Если Вы пишете, например, на PHP и знакомы с основополагающими принципами в разработке ПО, эта статья будет вам наиболее полезна. В свою очередь так как, я не являюсь экспертом по разработке на Java, можно предположить, что исходный код не претендует на лейбл “лучшие практики разработки на Java”.

Читать дальше →
Всего голосов 197: ↑170 и ↓27+143
Комментарии68

Тестирование игр в Иннове: рассказ о работе отдела

Время на прочтение7 мин
Количество просмотров17K
В качестве предисловия скажу, что я пришла в Иннову чуть больше года назад, моей задачей было «сделать тестирование в компании». Мой отдел тестирования состоит из двух групп: группа тестирования веб-приложений и группа тестирования игровых приложений. Такое разделение сложилось потому, что у этих направлений разные задачи и разные требования к сотрудникам.

Дальше рассказ будет про направление игрового тестирования. Это рассказ про моих ребят, про наши процессы, про нашу организацию работы. Приглашаю на словесную экскурсию.

Легион
Читать дальше →
Всего голосов 87: ↑65 и ↓22+43
Комментарии105

Юнит-тестирование в PHP

Время на прочтение13 мин
Количество просмотров188K
Язык PHP очень легок для изучения. Это, а так же обилие литературы «Освой _что_угодно_ за 24 часа» породило большое количество, мягко говоря, некачественного кода. Как следствие, рано или поздно любой программист, который выходит за рамки создания гостевой книги или сайта-визитки сталкивается с вопросом: «а если я здесь немножко добавлю, все остальное не ляжет?» Дать ответ на этот вопрос и на многие другие может юнит-тестирование.

В самом начале хочется оговориться — здесь речь не будет идти о TDD и методологиях разработки ПО. В данной статье я попробую показать начинающему PHP-разработчику основы использования модульного тестирования на базе фреймворка PHPUnit
Начнем?..
Всего голосов 97: ↑90 и ↓7+83
Комментарии90

Весенний семестр 2011 в Computer Science клубе в Санкт-Петербурге и Екатеринбурге

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


Весенний семестр в Computer Science клубе будет довольно алгоритмическим.

Курсы


В. Л. Ерухимов
Компьютерное зрение и библиотека OpenCV
Санкт-Петербург
3 пары, начало: 20.02
Д. Н. Москвин
Системы типизации лямбда-исчисления
Санкт-Петербург
12 пар, начало: 27.02
Ф. Фомин
Параметризованные
алгоритмы

Санкт-Петербург
4 пары, начало: 19.03
М. Бабенко
Линейное программирование
Санкт-Петербург
10 пар, начало: 16.04
М. Н. Вялый
Квантовые алгоритмы: возможности и ограничения
Санкт-Петербург
10 пар, начало: 02.04
П. Браславский
Анализ поисковых запросов
Екатеринбург
3 пар, начало: 13.05
Д. С. Перевалов
Что может и не может компьютерное зрение с OpenCV
Екатеринбург
2 пары, начало: 17.02
М. Ю. Хачай
Теоретические основы распознавания образов
Екатеринбург
6 пар, начало: 03.03
А. М. Райгородский
Случайные графы и алгоритмы
Екатеринбург
6 пар, начало: 18.03
М. А. Ройтберг
Анализ символьных последовательностей
Екатеринбург
6 пар, начало: 21.04


Читать дальше →
Всего голосов 81: ↑71 и ↓10+61
Комментарии33

Методы распознавания текстов

Время на прочтение6 мин
Количество просмотров59K
Несмотря на то, что в настоящее время большинство документов составляется на компьютерах, задача создания полностью электронного документооборота ещё далека до полной реализации. Как правило, существующие системы охватывают деятельность отдельных организаций, а обмен данными между организациями осуществляется с помощью традиционных бумажных документов.
Читать дальше →
Всего голосов 85: ↑73 и ↓12+61
Комментарии59

Знаешь ли ты JAVA, %username%?

Время на прочтение11 мин
Количество просмотров149K
JAVA Evil EditionНедавно я сдавал экзамен Oracle Certified Professional Java Programmer (бывший Sun Certified), и за время подготовки прорешал огромное количество различных задачек. Отдельные задачки по джаве иногда появляются на хабре и вызывают немалый интерес, поэтому я решил поделиться накопленным и сделать небольшую подборку.

Итак, ниже представлен десяток наиболее, на мой взгляд, интересных задач по Java SE из более чем 1000, проработанных мной. Сложность варьируется от средней до ооооооочень сложной. Решение большинства задач практически не требует знания API, достаточно логики и фундаментальных основ Java.

К слову, сложность экзамена Oracle Certified Professional Java Programmer гораздо ниже чем сложность данного теста, поэтому все, кто правильно ответит хотя бы на половину этих вопросов, может смело сдавать этот экзамен без всякой подготовки.

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

ВНИМАНИЕ: во второй половине статьи — ответы и подробные пояснения по соответствующим нюансам JAVA.

Читать дальше →
Всего голосов 136: ↑124 и ↓12+112
Комментарии85

Hg Init: Часть 1. Переобучение для пользователей Subversion

Время на прочтение9 мин
Количество просмотров123K
Hg Init: Учебное пособие по Mercurial.


Mercurial — это современная распределенная система контроля версий с открытым кодом. Эта система — заманчивая замена для более ранних систем вроде Subversion. В этом простом учебном пособии в шести частях Джоэль Спольски (Joel Spolsky) рассказывает о ключевых принципах Mercurial.

Если вы использовали Subversion, то Mercurial будет непонятным. Эта часть рассказывает о главных отличиях при работе с Mercurial. Если вы никогда не использовали Subversion, то можете просто пропустить эту часть.

Часть 1. Переобучение для пользователей Subversion


В каком же я был смятении, когда программисты в моей компании решили сменить Subversion на Mercurial!

Для начала, я начал приводить всевозможные тупые причины, по которым нам не надо ничего менять. «Мы должны хранить репозиторий на центральном сервере, так безопаснее», — сказал я. Знаете что? Я был неправ. При работе с Mercurial у каждого разработчика на жестком диске хранится полная копия репозитория. Это, на самом деле, безопаснее. В любом случае, почти в каждой команде, использующей Mercurial, центральный репозиторий тоже существует. И вы можете делать резервное копирование этого репозитория со всей необходимой одержимостью. А еще можете устроить трехступенчатую защиту с Сайлонами, Штурмовиками и прелестными лабрадудлами или что там требует ваш IT-отдел.

Читать дальше →
Всего голосов 119: ↑116 и ↓3+113
Комментарии125

Чем отличаются настоящие тестировщики от поддельных?

Время на прочтение5 мин
Количество просмотров27K
Сегодня я не смогла уснуть. Тяжкие думы не первый день омрачают моё бренное существование.

Их первоисточником (или, скорее, катализатором) послужило описание сферы тестирования на сайте SQA Testing School, находящейся в Силиконовой долине. В этом описании тестирование представляется как элементарная область, научиться которой можно очень быстро, знаний для этого нужно минимум, а зарабатывать в которой можно очень даже неплохо.

Первой праведной мыслью было: тестирование обидели!

На смену первой пришла вторая, более взвешенная: описанное вполне соответствует действительности. Устроиться тестировщиком легко. Быть плохим тестировщиком и при этом не быть уволенным — легко. Не приносить ни малейшей пользы проекту, и при этом зарабатывать нормальные деньги — легко.

Но ведь бывают, бывают истинные гении своего дела, которые приносят пользу, и, несмотря на «болотистый» рынок труда в сфере тестирования, являются высококвалифицированными специалистами!

Кто они?
Как отличить настоящих джедаев от поддельных тестировщиков?

Результатом раздумий стал СПИСОК ИЗ ДЕСЯТИ ОТЛИЧИЙ НАСТОЯЩЕГО ТЕСТИРОВЩИКА ОТ ПОДДЕЛЬНОГО.
Читать дальше →
Всего голосов 100: ↑92 и ↓8+84
Комментарии79

Хроники сообществ тестировщиков

Время на прочтение5 мин
Количество просмотров3.1K
В последнее время наблюдается интересная тенденция — зарождение и развитие оффлайновых сообществ тестировщиков на пост-советском пространстве (конечно, есть сообщества в Индии, Великобритании и других странах, но, в силу своей удаленности, они в данной заметке не рассматриваются). Похоже, маховик раскручивается в обратную сторону, люди возвращаются из бескрайних просторов Интернета в оффлайн, и это определенно дает положительные результаты.

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

В этой заметке мы расскажем о том, как появлялись различные сообщества тестировщиков в странах СНГ, что было причиной их возникновения, как они развивались и о текущем состоянии дел.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии9

Диалоговое окно Android с «иконифицированным» меню

Время на прочтение5 мин
Количество просмотров7.3K
Некоторое время назад меня увлекла идея разработки приложений под платформу Android. Дабы не заниматься изучением платформы на простых hello-world программках решил сделать что-то такое, что позволило бы освоиться с UI частью фреймворка, работой с БД, сетью и социальными сервисами.
Идея была придумана до одурения простая и я бы даже сказал, тупая. И вот когда я начал что-то делать то тут резко захотелось мне сделать красивое диалоговое окно с выбором пункта меню с иконками. Такой диалог присутствует в стандартном Андроиде, например, долгий тап на рабочем столе открывает диалог выбора добавляемого контента (виджет, обоины и т.д.). Итак, добро пожаловать под кат…
Читать дальше →
Всего голосов 87: ↑81 и ↓6+75
Комментарии38

Создание QuickAction диалогов в Android

Время на прочтение8 мин
Количество просмотров8K
О том как написать Хеллоу Ворлд в интернете полным полно, так что я решил рассказать о более интересных вещах. Официальное приложение Twitter для Android использует паттерны и возможности графического интерфейса появившиеся в последних версиях sdk, такие как Dashboard, Search Bar, QuickAction и Action Bar. Диалог QuickAction является одной из самых интересных новинок, он отображает контекстное действия для данного элемента ListView. Этот диалог используется также в приложении контактов, начиная с версии 2.0
Читать дальше →
Всего голосов 64: ↑55 и ↓9+46
Комментарии13

XPath наглядно

Время на прочтение1 мин
Количество просмотров60K
XPath является одним из ключевых моментов на дороге к пониманию XSLT. И на первых порах хочется получить какой-нибудь простой способ поэкспериментировать с ним, чтобы в деталях разобраться, как он работает. Способа такого, впрочем, не наблюдается. Приходится или качать совсем не бесплатные XML/XSLT редакторы, или довольствоваться статичными картинками с zvon.org. Может быть, я плохо искал. Но с моей колокольни все обстоит именно так. И когда передо мной в очередной раз встала задача «Объяснить XSLT», в голове и родилась идея крохотного сервиса. После того, как все заработало, было решено выкатить его для всеобщего пользования: наверняка не я один сталкивался с похожими проблемами.
Читать дальше →
Всего голосов 100: ↑93 и ↓7+86
Комментарии35

Любовь Google Maps к российским стратегическим объектам

Время на прочтение3 мин
Количество просмотров32K
Пользуюсь сервисом спутниковых снимков от Google практически с момента его появления и давно уже заметил странную особенность: он очень тяготеет к различным стратегическим объектам нашей необъятной Родины. Заурядные городишки Google Maps интересуют явно меньше чем военные части, аэродромы, полигоны, приграничные территории и т.д.

К примеру, в Бурятии и Забайкальском крае с хорошим разрешением снята совсем небольшая часть поверхности, в то же время, 70-80% малонаселенных областей границы с Монголией и Китаем сняты с отличным качеством! Зачем???
Читать дальше →
Всего голосов 167: ↑137 и ↓30+107
Комментарии222

Ещё раз про сортировку

Время на прочтение11 мин
Количество просмотров35K
Прошлый топик, про оценку сложности алгоритмов был весьма положительно оценён хабрасообществом. Из этого я могу сделать вывод, что тема базовых алгоритмов весьма интересна. Сегодня я хочу представить вам часть, посвящённую алгоритмам сортировки. Про базовые алгоритмы писать для Хабра совсем несерьёзно, а вот про сортировки Шелла, пирамидальную и быструю рассказать всё-таки стоит. (Если кому-то интересно почитать про базовые методы, милости прошу сюда)
Читать дальше →
Всего голосов 51: ↑36 и ↓15+21
Комментарии39

Информация

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