Search
Write a publication
Pull to refresh
20
0
Демишев Игорь @TrueDrago

User

Send message

Твиттер-боты создают события в международном масштабе

Reading time2 min
Views5K

Когда Greg Marra (на снимке) построил твиттер-бот @Trackgirl в 2008 году, он просто хотел проверить, сможет ли скрипт на Python проникнуть в социальную сеть реальных людей. Он не ожидал, что люди действительно будут беспокоиться за @Trackgirl, слать ей прямые собщения и интересоваться самочувствием после ее вымышленной травмы.

@Trackgirl отслеживала поток твитов с популярными в данный момент хештэгами, и публиковала их от своего имени. Три раза в день она фолловила 5 человек. Получалось, что она связана с правильными людьми, и другие люди стали фолловить ее, считая, что ее копипасты о беге на длинные дистанции исходили от живого человека. Однажды она твитнула о том, что повредила колено… Тысячи людей интересовались самочувствием скрипта и искренне сопереживали боту.
Читать дальше →

Формирование высокоуровневых признаков с помощью широкомасштабного эксперимента по обучению без учителя

Reading time5 min
Views25K
В статье Распознавание лиц человеческим мозгом: 19 фактов, о которых должны знать исследователи компьютерного зрения упоминался экспериментальный факт: в мозге примата имеются нейроны, селективно реагирующие на изображение морды лица (человека, обезьяны и т.п.), причем средняя задержка составляет около 120 мс. Из чего в комментарии я сделал дилетантский вывод о том, что зрительный образ обрабатывается прямым распространением сигнала, и количество слоёв нейронной сети — около 12.

Предлагаю новое экспериментальное подтверждение этого факта, опубликованное concretely нашим любимым Andrew Ng.
Читать дальше →

Профилирование и отладка php-приложений с помощью xhprof & FirePHP

Reading time5 min
Views68K

Всем веб-разработчикам, особенно в высоконагруженных проектах, рано или поздно приходится сталкиваться с профилированием своих приложений. Конечно, все мы знаем xdebug, с помощью которого можно проводить отладку серверной части. Однако, в тяжелых RIA-приложениях значительно чаще приходится отлаживаться в связке фронтенда+бэкэнд, всякие ajax-запросы, скорость отработки конкретных скриптов и все такое прочее. И для этих задач есть довольно-таки не плохой набор инструментов. Это xhprof и firephp.
Читать дальше →

Американская мечта стартапа LinguaLeo сбывается! Runa Capital инвестировала $3 000 000 в сервис для изучения иностранных языков!

Reading time5 min
Views130K

История LinguaLeo похожа на американские горки: идея, команда, тропический старт, кризис ликвидности, случайная встреча и ангельские инвестиции, ожидание результатов, победа в конкурсе БИТ 2011, выход на самоокупаемость, полгода поиска и собеседования инвесторов для выхода на международный уровень, терм-шит, 5 месяцев согласований, и… сделка века состоялась!

А теперь
Читать дальше →

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

Reading time8 min
Views58K

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

Наглядный пример использования замыканий в PHP

Reading time2 min
Views12K
Начиная с версии 5.3, PHP позволяет создавать замыкания. К сожалению, пример их использования в официальной документации http://www.php.net/manual/en/functions.anonymous.php#example-163 (example 3) обладает редкой изощрённостью и надуманностью. Надеюсь, пример под катом поможет увидеть в замыканиях другое применение, кроме как с функциями типа array_map().
Читать дальше →

Защита для NGINX — NAXSI

Reading time3 min
Views39K

Что такое NAXSI ?


NAXSI = NGINX ANTI XSS & SQL INJECTION
Проще говоря, это файрвол веб-приложений (WAF) для NGINX, помогающий в защите от XSS, SQL-инъекций, CSRF, Local & Remote file inclusions.
Отличительными особенностями его являются быстрота работы и простота настройки. Это делает его хорошей альтернативой например mod_security и апачу.

Зачем нужен NAXSI ?

Очевидно, лучше всего защищаться от вышеперечисленных атак правильно написанным кодом. Но есть ситуации, когда WAF (и в частности naxsi), поможет:
  • Низкое качество кода сайта, при отсутствии возможности/ресурсов все выкинуть и переписать нормально.
  • “Закрытый” код, в котором невозможно исправить ошибки.
  • Неизвестное качество кода в важном для бизнеса участке.


Читать дальше →

Безопасная аутентификация между клиентом и сервером без ввода логина и пароля

Reading time7 min
Views25K
Недавно, при разработке распределенного анализатор трафика, у меня появилась задача спроектировать систему аутентификации между клиентом и сервером. Причем необходимо было спроектировать систему для двух разных ситуаций:

  • когда клиент и сервер общаются в доверенной (локальной) сети;
  • клиент и сервер взаимодействуют через глобальную, незащищенную сеть.

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

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

Читать дальше →

Рассылки по сегментам на основе MailChimp

Reading time8 min
Views35K
Привет, Хабр! Сегодня я расскажу о том, как можно интегрировать сервис почтовых рассылок mailchimp на своем сайте.
Сервис дает множество возможностей:
— расширенный трекинг;
— выборки пользователей;
— красивые шаблоны писем;
— интеграция с социальными сетями;
— интеграция с Google Analytics;
— экономия времени на разработку своего проекта.
На основе этого сервиса мы сделали автоматическую рассылку спецпредложений по целевым срезам — определенным вендорам и категориям продуктов. Попробуем вкратце рассказать о некоторых особенностях реализации.
Читать дальше →

Как найти девушку за 250 микросекунд

Reading time4 min
Views89K
В отличие от Европы и Америки в России к сайтам знакомств преобладает осторожное отношение. Однако, надежда нажать на волшебную кнопочку и найти себе любовь не гаснет в сердцах многих. И мы должны эту надежду оправдывать. Конечно, сразу найти идеально подходящую “половинку” мы не обещаем, но предложить десятки, сотни или в отдельных случаях тысячи вариантов, отвечающих именно вашим запросам, просто обязаны. Что и делаем, причем очень быстро.

Средний поиск по базе из 11 миллионов анкет, имеющих от 4 до 30 параметров каждая, занимает у нас в среднем 3.5 милисекунды. И при этом кроме поиска демон-серчер «Мамбы» выполняет следующие, в том числе не вполне традиционные задачи:
  • для каждой конкретной анкеты выдает ее место в поиске (каждый пользователь, заходя в свою анкету, видит сообщение «Вы находитесь на N месте в поиске»)
  • выдает конкретную анкету из списка по первичному ключу
  • производит непосредственный поиск анкеты по заданным параметрам

Несмотря на то, что наш поиск с самого начала разрабатывался собственными силами, время от времени возникали мысли использовать что-то уже известное, обкатанное и гарантированно эффективное. Ну, а если мы задумываемся о поиске, первым в голову приходит Sphinx.
Читать дальше →

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views93K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


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

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →

Адаптивный веб-дизайн на практике

Reading time12 min
Views85K
Мы уже писали о методах (Mobile First и Response Web Design), которые используем при разработке нашего сервиса. В этой статье я хочу поделиться с вами нашим опытом. То, что в теории кажется простым, на практике порой оборачивается кошмаром. Речь пойдет о том, как нам удается создавать универсальный веб-сервис, способный работать на большом количестве устройств.
Читать дальше →

Настоящие нечестные конкурентные преимущества

Reading time11 min
Views36K
image

Что, если кто-нибудь скопирует вашу гениальную бизнес-идею?



Около двадцати человек на Answers OnStartups задали этот вопрос в той или иной форме:
Когда я встречаюсь с инвестором-ангелом, он может спросить: «Что, если большая компания скопирует твою идею и разработает такой же сайт, как у тебя после того, как твой сайт увидит мир?»

Как я могу ответить на этот вопрос?

Нет, вопрос звучит иначе: что вы сейчас делаете, зная, что большая компания будет копировать вашу идею?
Читать дальше →

Image to URI, легкий способ конвертации

Reading time2 min
Views12K
Приветствую всех.
Читаю давно Хабр, и как-то ни разу не упоминалось о том, есть ли какой нибудь легкий способ конвертации изображений в data: URI.
Да, конечно есть онлайн сервисы для конвертации, но когда требуется массовая конвертация, в них работать очень не удобно.
Читать дальше →

Самый частый шаблон SQL инъекций в РНР — бесполезное экранирование символов

Reading time2 min
Views36K
По роду своей деятельности, мне приходится выполнять аудиты безопасности исходного кода веб-приложений.
Много веб-приложений и много кода…

В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.

Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
Читать дальше →

10 лучших инструментов для разработки и администрирования MySQL

Reading time6 min
Views745K
Многие компании создают различные многофункциональные приложения для облегчения управления, разработки и администрирования баз данных.

Большинство реляционных баз данных, за исключением MS Access, состоят из двух отдельных компонентов: «back-end», где хранятся данные и «front-end» — пользовательский интерфейс для взаимодействия с данными. Этот тип конструкции достаточно умный, так как он распараллеливает двухуровневую модель программирования, которая отделяет слой данных от пользовательского интерфейса и позволяет сконцентрировать рынок ПО непосредственно на улучшении своих продуктов. Эта модель открывает двери для третьих сторон, которые создают свои приложения для взаимодействия с различными базами данных.

В Интернете каждый может найти много продуктов для разработки и администрирования баз данных MySQL. Мы решили собрать 10 самых популярных инструментов в одной статье, чтобы вы смогли сэкономить свое время.
Читать дальше →

Как получить у инвестора деньги без утюга и резиновой дубинки?

Reading time5 min
Views13K
Джефф Байер и Джон Файбер — умудрённые опытом советники AlmazCapital и Almaz Venture Capital, которым за год приходит около 3500 заявок. Они выбирают из них 5 или 10 штук, а остальные аккуратно опускают в мусорную корзину.

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


КДПВ: в топике помогают зарабатывать такие штуки

Data Mining необычайно рулит


Самый интересный сегмент сегодня — это «большие данные». Дело в том, что объем данных, который генерируется и используется человечеством, растет в геометрической прогрессии. Эти данные надо уметь обрабатывать. Любая крупная компания так или иначе сталкивается с делом обработки больших массивов данных, потому что только тогда они становятся коммерческой информацией.
Читать дальше →

Ремарт: как я создавал свой бизнес

Reading time4 min
Views1.1K
Часть III: Команда

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

Как организовать команду и заразить всех членов общей целью? Меня все время мучает вопрос: «ну, почему они не понимают?» Ведь сначала нужно напрячься и крепко поработать, чтобы получить результат и только потом можно будет думать о том, как бы это расслабиться. Очевидно! Оказывается, так думают не многие, я бы даже сказал меньшинство. Оказывается, большинство хотят все прямо сейчас. Их мало заботит, что ты сейчас в самом начале пути, что у тебя нет ресурсов, чтобы сделать их жизнь сказкой, и что им нужно ужаться в расходах на какой-то промежуток времени. Есть такое понятие «стремление избегать неопределенности» и, оказывается, большинство людей максимально стремятся этой самой неопределенности избегать.
Работая в стартапе, команда сталкивается как раз с тем, что такие неопределенности на каждом шагу. Касаясь конкретно нашего проекта так уж точно. Мы выводим на рынок новый продукт, никто так раньше не делал, а значит понять ценность продукта для потребителей сложно. По нашей оценке – это ценно, но это наша оценка, а провести какое-то исследование – дорого. Часто мы обращаемся ко мнению со стороны, чтобы оценить сервис и всю нашу. Спасибо за отзывы в предыдущих статьях, вижу что вам нравится, что наши усилия не проходят зря и нам необходимо двигаться только вперед. Мы работаем, общаемся с партнерами, для них это тоже ново и непредсказуемо, реакции тоже разные. Ворочать носом нам вроде как не пристало, мы ведь еще пока маленькие и не очень всем интересные. Выручку просчитать невозможно: как построить модель, если не с чем сравнить и не к чему привязаться? Соответственно и команде пообещать нечего, во всяком случае, обоснованно просчитанного. Полная неопределенность.
В таких условиях мы делаем упор на нескольких направлениях:
Читать дальше →

Болee 40 онлайн-курсов от Coursera и Udacity

Reading time4 min
Views35K
Сегодня проект Coursera, о котором на хабре уже неоднократно писали, наконец перешел из статуса беты в полностью рабочий. И переход этот можно назвать, мягко говоря, успешным — к уже заявленным и частично идущим 16 курсам от Stanford и Berkley и 1 курсу от Michigan добавились 12 курсов от Penn (Философия, Литература, Экономика, Медицина), 6 от Michigan (Литература, Экономика, Право) и 8 от Princeton (История, Математика, Computer Science).

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



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

Читать дальше →

Debugging PHP applications with xdebug

Reading time8 min
Views45K
Добро пожаловать на 4 часть повествования о xdebug. Сегодня мы попытаемся разобраться в отладке PHP кода с помощью xdebug. В данной статье мы полагаем, что вы уже давно установили xdebug на вашу систему, если нет первая статья серии опишет вам как это сделать.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity