Как стать автором
Обновить
20
0
Демишев Игорь @TrueDrago

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

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

Подводный камень в foreach($items as &$item)

Время на прочтение2 мин
Количество просмотров77K
Многие любят писать такие конструкции в том или ином виде, каждый сталкивался:
foreach ($items as &$item) {
    $item += 2;
}

Но не многие подозревают о том, какая опасность тут скрывается.
Рассмотрим пример.
Читать дальше →

Базовые рекомендации для повышения безопасности *nix веб-сервера

Время на прочтение3 мин
Количество просмотров25K
Вдохновившись статьей о поиске следов взлома, решил написать статью о предупреждении взлома и базовых шагах для сведения возможности взлома сервера к минимуму.
Все шаги крайне важны, и невозможно выделить самый-самый важный, либо второстепенный.
Данная статья не является пошаговой инструкцией, а лишь списком рекомендуемых шагов.
Читать дальше →

«Правильная» музыка. Или как навести порядок в своей MP3 коллекции

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

Мотивы

Навеяно хабратопиком.

Предыстория

В октябре 2008 года я купил себе iPhone 3G и, до нынешнего лета, в качестве mp3-плеера использовал именно его. Необходимость загружать музыку в смартфон, используя iTunes, по началу меня изрядно напрягала. Но, как выяснилось значительно позже, возможно именно это избавило меня от головной боли с конвертированием тегов, записанных кириллицей. Я просто не задумываясь добавлял альбомы из своей коллекции в «тунец» и всегда гарантированно получал на телефоне треки без «кракозябр». Удобно. Но всему приходит конец.
а дальше...

Обзор бесплатных инструментов для пентеста web-ресурсов и не только v2

Время на прочтение8 мин
Количество просмотров194K
Как-то давно я уже писал об этом, но немного скудно и сумбурно. После я решил расширить список инструментов в обзоре, добавить статье структуры, учесть критику (большое спасибо Lefty за советы) и отправил ее на конкурс на СекЛаб (и опубликовал ссылку, но по всем понятным причинам ее никто не увидел). Конкурс закончен, результаты объявили и я с чистой совестью могу ее (статью) опубликовать на Хабре.

Бесплатные инструменты пентестера веб-приложений


В данной статье я расскажу о наиболее популярных инструментах для пентестинга (тестов на проникновение) веб-приложений по стратегии «черного ящика».
Для этого мы рассмотрим утилиты, которые помогут в данном виде тестирования. Рассмотрим следующие категории продуктов:

  1. Сетевые сканеры
  2. Сканеры брешей в веб-скриптах
  3. Эксплойтинг
  4. Автомазация инъекций
  5. Дебаггеры (снифферы, локальные прокси и т.п.)

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

Codeception — тестирование по-новому

Время на прочтение4 мин
Количество просмотров88K
PHP очень популярный язык программирования, но тестирование в нем, это скорее прерогатива экспертов, а не жизненная необходимость. Неужели это от того, что PHP-разработчики поголовно быдло-кодеры? Я считаю, что нет. Скорее всё от того, что системы тестирования порой излишне усложнены. А тесты, наоборот, должны были предельно просты: легко читаться, писаться, отлаживаться, и конечно же, быстро выполняться. Мое виденье того как это можно воплотить в PHP вылилось в проект под названием Codeception.

С ним тесты для ваших веб-приложений могут выглядеть так:
<?php
$I = new TestGuy($scenario);
$I->wantTo('create new blog post');
$I->amOnPage('/blog/posts');
$I->click('Create new post');
$I->fillField('Title','Codeception, a new way of testing!');
$I->fillField('Text','Codeception is new PHP full-stack testing framework.');
$I->click('Send');
$I->see('Congratulations, your post is successfully created!');


Согласитесь, такой тест понятен без дополнительных комментариев.
А теперь самое интересное: этот код без всяких изменений может быть выполнен как функциональный тест в фреймворках symfony, Symfony2,Zend Framework, а также в браузерном эмуляторе Goutte и даже через Selenium. Таким образом, вам предлагается единый интерфейс для написания функциональных тестов практически для любого сайта.
Читать дальше →

Хостинг mercurial репозиториев с помощью nginx, gunicorn и supervisor

Время на прочтение5 мин
Количество просмотров4K
imageСпособов хостинга mercurial репозиториев достаточно, но я сочинил именно такой вариант по следующим причинам:
  1. nginx: мало кушает, быстро работает — скорость
  2. supervisor: мониторит процесс, перезапускает если что — надёжность
  3. gunicorn: wsgi, большие возможности по настройке — эффективность
Кроме того, т.к. я разрабатываю на django, и сайты запускаю под этой же связкой, есть и четвёртая причина — унификация, а она очень полезная вещь.

Если вас заинтересовала тема, то конкретные инструкции и конфиги — под катом.
Читать дальше →

«Выглядит похоже». Как работает перцептивный хэш

Время на прочтение6 мин
Количество просмотров125K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

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

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

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

Введение


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

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


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


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

DDOS-бот на PHP гуляет по серверам

Время на прочтение3 мин
Количество просмотров20K
Сегодня, около двух часов ночи, когда я хотел отойти ко сну, ко мне в скайп написал один из знакомых. В прошлом году я помогал ему администрировать несколько его серверов. В столь позднее время он писал о том, что сетевой интерфейс одного из его серверов полностью забит, судя по графику mrtg. Я посмотрел, действительно, я даже не смог достучаться до ssh, сервер перезагрузили и начался анализ ситуации…

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

Схема обработки ошибок в Yii

Время на прочтение4 мин
Количество просмотров34K
Всем привет!
Процесс обработки ошибок в Yii был для меня не совсем прозрачным с первых дней использования этого фреймворка. Даже несмотря на наличие в документации специального раздела Error Handling. В каких случаях какие view используются, как влияет ajax или debug-режим, зачем нужен errorAction, в чем отличия при обработке исключений?
В итоге после копания в документации и исходном коде фреймворка я нарисовал наглядную схему обработки ошибок, которая лично для меня оказалась весьма полезной и наверняка пригодится кому-то еще.
Под катом собственно схема и некоторые комментарии к ней.
Читать дальше →

Мы готовы давать денег меньше всех

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

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

Как удовлетворить всех?

Главстарт готов начать с того, чтобы дать как можно меньше денег стартапу. 20 тысяч долларов за 10% проекта.
Читать дальше →

Уязвимости серверов к медленному чтению

Время на прочтение2 мин
Количество просмотров28K
Приветствую.
Хочу рассказать, чем я баловался в свободное от работы в Qualys время. Так как в англоязычном интернете на удивление много шума про Slow Read DoS attack, и уверен что получу здесь много полезной критики и дельных предложений.

В августе 2011 года написал програмку slowhttptest, которая тестирует веб-серверы на наличие уязвимостей, связанных с обработкой медленных HTTP запросов, таких как slowloris и slow HTTP Post. Цель — создать конфигурируемый инструмент, облегчающий работу разработчиков и позволить им концентрироваться на создании эффективных защит, а не ковырянии в питоне, на котором написаны большинство proof-of-concept эксплоитов.

А потом решил попробовать, как реагируют серверы на медленное чтение клиентами HTTP респонсов. На удивление плохо реагируют. Дефолтные apache, nginx, lightpd, IIS отказывают в обслуживании на ура.

А суть такова:
Читать дальше →

Завалить 30 серверов за секунду с лаптопа?

Время на прочтение2 мин
Количество просмотров6.3K
Выпустив новую версию slowhttptest с поддержкой медленного чтения (Slow Read DoS attack), я помог нескольким пользователям протестировать их сервисы. Во время одного из тестов произошла поучительная история, которую я хочу рассказать.

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

7 классных примеров с тенями для текста, которые вы просто не можете пропустить

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

В прошлых двух статьях мы познакомились с тем, как работают тени в CSS3: box-shadow и text-shadow. Сегодня, продолжая последнюю тему, мы посмотрим на еще несколько красивых примеров использования теней для текста для достижения интересных эффектов.
Читать дальше →

Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

Время на прочтение3 мин
Количество просмотров382K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →

Красивый вывод изображений

Время на прочтение3 мин
Количество просмотров46K
image
Всегда мне не нравилось, как выводятся изображения на моих сайтах. Хотелось какой-то упорядоченности, зависимости. Поэтому, я полез искать скрипты и решения в гугле. После безуспешных поисков, решено было делать что-то самому.
Но что? Я стал смотреть, как сделан вывод картинок у популярных сайтов. Всё мне не нравилось, пока я не додумался посмотреть вывод в google images и google+. Меня поразило то, что я никогда этого не замечал картинки выравниваются по ширине и высоте не обрезаясь. Такой принцип я и захотел реализовать. Получается мозаика. И всё будто на своём месте.
Не долго думая, я сел писать код, который сможет вывести картинки так же.
Читать дальше →

Уникальный ключ в условиях распределенной БД

Время на прочтение3 мин
Количество просмотров34K
В случае если вы разделяете данные по нескольким физическим базам данных,
поддержка глобально-уникальных идентификаторов становится не такой уж тривиальной задачей.
Я попытался собрать вместе возможные варианты и рассмотреть их плюсы и минусы.
Читать дальше →

Хабраигра «Стартап»

Время на прочтение5 мин
Количество просмотров91K
На прошлой неделе «Мосигра» отгрузила Хабру первые 20 коробок игры «Стартап», которую мы совместно пилили больше трёх месяцев. Это игра про малый бизнес, IT-проекты, умение договариваться, планировать время, оценивать свои силы и вместе разруливать разные проблемы.

Вот что мы хотели от настольной игры:
  • Сделать наконец-то что-то про IT.
  • И про свой бизнес.
  • Игра должна быть тренирующей навыки переговоров и иллюстрирующая проект-менеджмент.
  • Начать играть можно за 2 минуты, но нюансы искать ещё долго.
  • Без 100% выигрышной стратегии, каждый раз — по ситуации.
  • Без кубиков и адского рандома.
  • С небольшой долей чёрного юмора и локальных мемов.
И вот что у нас получилось. Вот так выглядит игра «Стартап», которая с прошлой недели продаётся в Мосигре:

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

Настольные игры: во что играют в IT-офисах

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


В январе прошлого года я делал обзор IT-настолок, который оказался постом выбора подарков. В этом году обзор — до Нового Года, как просили в комментариях.

Раньше игры с компьютера «портировались» в настольные игры, например, так стало со Starcraft, Warcraft, Doom, Civilization, Master of Orion и кучей других шедевров.

В этом году ситуация радикально поменялась: из-за огромного распространения планшетов и мобильных телефонов с хорошей поддержкой игр, настолки стали перекочёвывать в Appstore и Android Market. Под катом обзор наиболее интересных штук этого года, пример отечественного краудсорсингового проекта и традиционный небольшой подарок всем хабражителям.

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

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Время на прочтение15 мин
Количество просмотров99K
Приветствую всех хаброжителей!

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

Думаю вполне резонным будет предположение, что данная тема уже набила оскомину, но все же я рискну поделиться своим опытом. На суд читателя будет представлена клиент-серверная реализация схемы резервного копирования. В качестве инструмента я выбрал open source проект Bacula. По более чем полугодовому опыту его использования остаюсь доволен своим выбором.

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

Под хабракатом я опишу все демоны подробно


В моем случае резервному копированию подлежат:
  1. Конфигурационные файлы различных демонов со всех серверов.
  2. MySQL базы данных.
  3. Документооборот с файлового сервера Windows.
  4. Различные важные данные с nix серверов(движки сайтов/форумов, etc..)


Приглашаю под кат тех, кто еще не делает бекапы, и тех кто уже их делает.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность