Игорь Савчук

Отъявленный программист. Лайфхакинг из первых рук


Скачать книгу

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

      Что такого принципиально нового ты смог предложить, если этим занимаются тысячи человек по всему миру?

      Цвет кожи (особенно детской) имеет достаточно специфичный оттенок, который предсказуемо «корежится» при пережатии в разные цветовые пространства. Сочетание цветов половых органов также специфично. Но это мы пока говорим про то, что есть на порно. А вот то, чего на нем гарантированно нет, позволяет однозначно отсеять кучу другого контента. Обычно в качестве критерия для поиска с переменным успехом искали лишь первую часть условия. У меня же эффективность значительно увеличивается использованием второй «исключающей» составляющей. Но даже в первой составляющей у меня есть определенные ноу-хау.

      А вообще, основные алгоритмы были лицензированы у Кэннона и только допилены под мое видение задачи. К примеру, мой вклад – там распознается не только свет, но еще и постановка освещения. В дешевом порно она очень характерна. Например, повсеместное мигание вспышек. Кстати, в момент вспышки мы получаем истинный цвет, решая проблему баланса.

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

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

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

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

      Одну текущую задачу сначала показали «плюсовику», спросив, сколько займет ее решение. Он сказал: «Здесь нужно писать могучий движок. Короче говоря, это проект на полгода». Его коллега-«сишник» поинтересовался: «А зачем?» Ведь поставленная задача укладывается в сотню строк кода! Ответ был ошеломляющим:

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

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