Search
Write a publication
Pull to refresh
59
0
Roman Lugovkin @RomanL

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

Send message

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

Reading time4 min
Views40K

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

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

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

В злых целях знания использовать не буду!

Как сделать один сайт для всех устройств (Responsive Web Design)

Reading time3 min
Views292K
Вчера была опубликована хорошая статья «Веб-дизайн. Каждому устройству свое представление». Несмотря на неплохие размышления, к сожалению, вывод в ней довольно глупый. А именно:

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

Почему это глупо


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



Это скриншот из презентации «Beyond the mobile web by yiibu» (очень рекомендую).

Во-вторых, если вы не facebook или yandex, скорее всего, вы не потянете создание и поддержку разных версий сайта для каждого устройства. Да и это не имеет особого смысла. Потому что ситуация становится похожа на реалии пятнадцатилетней давности. Тогда делали сайт «под браузер», а сейчас автор предлагает делать сайт «под устройство».

Как сделать один сайт для всех устройств

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

Производительный и читабельный XSLT: сборник советов

Reading time7 min
Views11K
В моей практике чаще всего в качестве шаблонизатора используется именно XSLT. Я не буду рассуждать о том, почему так происходит — о преимуществах данной технологии написано вполне достаточно. Но ещё больше написано о её недостатках. Считается, что XSLT является слишком многословным и тяжёлым для чтения, а также не самым производительным. В этой статье я постараюсь собрать несколько советов по улучшению качества XSLT-кода с точки зрения читабельности и выразительности. Некоторые из них также позволят XSLT работать несколько быстрее.

Именованные шаблоны

Многие «проблемы» XSLT связаны с тем, что мы слишком часто пытаемся писать на нём в процедурном стиле. Мы постоянно пытаемся сделать из него Smarty, но упираемся в один простой факт — XSLT является декларативным языком, как бы необычно это для нас не выглядело.
Например, мы пытаемся использовать именованные шаблоны, воспринимая их как процедуры, выводящие данные в определённом формате:

<xsl:template name="CreateItemLink">
    <xsl:param name="item"/>
    <a href="/item/?id={$item/id}">
        <xsl:value-of select="$item/name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Наверное, многие программисты именно так написали свой первый шаблон. И он неплохо решает свою задачу. Декларативный XSLT предлагает немного другой подход:

<xsl:template match="item">
    <a href="/item/?id={id}">
        <xsl:value-of select="name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Разница совсем не велика. Дело вкуса и стиля программирования. Давайте посмотрим, как шаблон будет использоваться в дальнейшем.

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

Imperavi: удобный и действительно красивый JS WYSIWYG редактор

Reading time1 min
Views22K
В продолжение темы о красивой и удобной JS визуализации (http://habrahabr.ru/blogs/javascript/124899/) хочу рассказать вам о WYSIWYG редакторе, на который сегодня случайно наткнулся.

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

Таких редакторов существуют десятки, но все они мне почему-то не нравилисись: то выглядит уж очень топорно, то работает совершенно криво. В конце концов я остановился на TinyMCE. Он хоть и ужасен на вид, но рабоет стабильно.

И вот сегодня я совершенно случано наткнулся на редактор, который мне полностью подходит:
  • работает стабильно
  • выглядит очень стильно
  • написан на jQuery

Имя этому чуду – Imperavi.
Попробуйте сами и думаю, что вам понравится.

Скриншот:
image

UPD
Более новая версия редактора: http://imperavi.ru/redactor/.

Теория Игр и функция Шпрага-Гранди

Reading time6 min
Views35K
Доброго времени суток, уважаемое Хабрасообщество.

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

Я хочу рассказать вам основы теории Игр, доказать функцию Шпрага-Гранди, разобрать несколько классических impartial-задач и проиллюстрировать их кодом на python.
Читать дальше →

Каждому хостингу по аудиоплееру

Reading time2 min
Views6.1K
Хорошие художники копируют, великие художники воруют.
Стив Джобс
Пабло Пикассо

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

Общение с fastcgi менеджером

Reading time3 min
Views3K

Описание


Маленькое расширение для FCGI::ProcManager, позволяющее обращаться к менеджеру fcgi процессов. Для связи сторонней программы с менеджером используется сокет.

Подводные камни


Модуль FCGI::ProcManager используется для порождения обработчиков входящих запросов. Текущий процесс является менеджером. Со старта он порождает обработчиков (n_processes штук), далее он поддерживает их количество, следя за погибшими в бою. Для этих целей он использует wait. Тут и кроется проблемка. После того, как запущены потоки, менеджер, вызывая wait, блокируется. Достучаться до него можно только через сигналы. Исполнять в обработчике сигнала код нужно с умом и аккуратно, гонять там говнокод — нехорошо. А значит необходимо наладить другой канал связи.
Читать дальше →

Закончился последний отборочный раунд Google Code Jam 2011

Reading time1 min
Views1.4K
Вчера вечером прошел третий и последний отборочный раунд ежегодного турнира по спортивному программированию Google Code Jam.
Top-25 участников прошли в финал, который будет проходить 29 июля в Токио. В него вошли представители следующих стран:
  • 10 участников из России:
    • vepifanov (Владислав Епифанов)
    • ilyaraz (Илья Разенштейн)
    • Egor (Егор Куликов)
    • ashmelev(Алексей Шмелев)
    • ilyakor (Илья Корнаков)
    • bsod (Евгений Капун)
    • darnley (Михаил Дворкин)
    • natalia (Наталья Бондаренко)
    • andrewzta (Андрей Станкевич)
    • winger (Владислав Исенбаев)
  • 5 участников из Китая: Bin.Jin, g201513, hanshuai, acrush, zyz915
  • 3 участника из Японии: ir5, omeometo, rng..58
  • По одному участнику из
    • США: neal.wu
    • Индонезии: Dolph
    • Польши: meret
    • Беларуси: mystic (Иван Метельский)
    • Словакии: misof
    • Грузии: nika
    • Великобритании: linguo

Официальные результаты

SRP-6: аутентификация без передачи пароля

Reading time5 min
Views34K
Как и было обещано в соседней теме, где рассказывался велосипед, выкладываю описание алгоритма SRP RFC2945 — способе регистрации и аутентификации пользователей безопасным образом по небезопасному каналу. Вот только в процессе подготовки статьи я обнаружил более свежую версию протокола, SRP-6, вместе с реализацией, в связи с чем решил выбросить свои архаичные наработки по SRP-3, и просто дать ссылки на имплементацию новой версии.
Читать дальше →

Tim Salimans o выигрыше в конкурсе предсказаний результатов шахматных партий от Kaggle

Reading time4 min
Views4.3K
Kaggle организует соревнования для людей, которые занимаются data mining. Сейчас открыты два конкурса. Один на 3 миллиона долларов, цель которого улучшить систему, по которой людей кладут в больницы. Второй — с призовым фондом 3000 долларов, чтобы улучшить измерения эллиптичности галактик, что позволит лучше измерить так называемую «темную материю» во вселенной.

Уже прошло около двух десятков конкурсов. О своем опыте участники делятся на блоге. Ниже — перевод поста Tim Salimans о его опыте участия в конкурсе предсказания результатов шахматных встреч на основе прошедших результатов.

Участникам конкурса предоставлялись результаты более 1,84 миллиона встреч более чем 54.000 шахматистов. Задача была предсказать результаты 100.000 игр между этими же шахматистами за следующие три месяца. В конкурсе приняли участие 189 команд.

Вот что Tim Salimans написал о том, как он его выиграл.

Lamport hash chain – страховка от кражи базы паролей клиентов

Reading time7 min
Views4.3K
Весьма интересный пост, опубликованный недавно на Хабре, и особенно комментарии к нему подтолкнули меня к описанию, пожалуй, единственной симметричной схемы, действительно обеспечивающей страховку от кражи базы паролей с сервера – схемы Лэмпорта («Lamport hash chain»). Алгоритм на самом деле чрезвычайно прост и предложен автором (L.Lamport) еще в 1981 году. Более того, схема в большинстве учебников уже упоминается как «устаревшая», т.к. целью ее разработки была в первую очередь защита от перехвата пароля на этапе передачи, а появившиеся позднее схемы семейства «challenge-handshake» (CHAP, CRAM) решают эту задачу гораздо более эффективно. А вот о втором интересном свойстве схемы Лэмпорта уже потихоньку забыли – она не требует конфиденциальности аутентификационных данных пользователей, хранимых на серверной стороне (свойство, обычно присущее только асимметричным схемам с сертификатам клиентов). Посмотрим, как можно достичь этого свойства с помощью одной только криптостойкой хеш-функции.
Читать дальше →

Парикмахер, лицензии Creative Commons — лекарство от РАО

Reading time6 min
Views10K
Так… надеюсь, я ничего не перепутал в этой статье. На всякий случай предупреждаю, я не юрист и ничего не гарантирую, так что юристы могут меня поправить.
Парикмахеров могут заставить отказаться от привычки слушать музыкальное радио во время работы: Российское авторское общество (РАО) отсудило 80 000 руб. у владельца нижегородской парикмахерской и грозит аналогичными исками другим парикмахерским, салонам красоты, химчисткам и даже маршруткам, если они не согласятся платить.

Суд Автозаводского района Нижнего Новгорода 23 мая удовлетворил иск Волго-Вятского филиала РАО к салону-парикмахерской № 100 о взыскании 80 000 руб. в пользу российских авторов пяти песен, сообщил «Ведомостям» юрисконсульт Сергей Чекмарев. В ходе проверки 26 февраля сотрудники РАО зафиксировали, что в салоне звучало радио «Дача». «Публичное воспроизведение музыки в коммерческих целях без выплаты денежной компенсации авторам песен — нарушение авторского права», — пояснил Чекмарев.

В авторском обществе говорят, что это не последний судебный иск к парикмахерским, салонам красоты и химчисткам.

«Пока договор с нами эти организации еще не заключили, а нарушают авторское законодательство на каждом шагу», — возмущается директор Волго-Вятского филиала РАО Максим Королев. Ранее Королев говорил о планах РАО брать деньги с владельцев маршрутных такси.
Читать дальше →

Восстановление изображений при помощи нейросетей

Reading time3 min
Views35K

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

Настройка сервера для django-проектов с нуля

Reading time6 min
Views41K
Хочу поделиться опытом настройки сервера для django-проектов. Так вышло, что мне часто приходится настраивать с нуля VPS-сервера для запуска на них django-сайтов. Как-то мне в голову пришла идея записать пошагово процесс настройки. Оказалось, что “по бумажке” выполнять эти рутинные операции гораздо проще и быстрее — все нюансы записаны, трудно что-то упустить. Дальше больше — я превратил инструкцию в самостоятельный shell-скрипт — запустил и сервер готов. Я думаю, некоторым python-разработчикам, особенно начинающим, будет полезно ознакомиться с содержимым скрипта. С некоторыми доработками вы, возможно, захотите использовать его в своей практике.
Читать дальше →

Жадные алгоритмы

Reading time4 min
Views207K
ДеньгиДоброго времени суток, хабр! Сегодня я бы хотел рассказать про жадные алгоритмы.

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

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

Сверхбыстрая разметка изображений

Reading time9 min
Views7K
В статье расскажу как можно очень быстро перечислить связные объекты на бинарном растре, значительно быстрее, чем я рассказывал в предыдущей статье. Казалось бы, куда такие скорости; теперь мы будем «расправляться» с картинками 4096 на 4096 за десятки миллисекунд. И хоть задача интересна и сама по себе, но в основе ее решения лежит довольно простой и оригинальный метод с достаточно широкой применимостью, основным тезисом которого является «сделаем как проще и посмотрим, что из этого выйдет». В данном случае в качестве основного вычислителя будет использоваться CUDA, но без особой специфики, потому что мы хотим сделать «очень просто».
Читать дальше →

Наивный Байесовский классификатор в 25 строк кода

Reading time3 min
Views90K
Наивный Байесовский классификатор один из самых простых из алгоритмов классификации. Тем не менее, очень часто он работает не хуже, а то и лучше более сложных алгоритмов. Здесь я хочу поделиться кодом и описанием того, как это все работает.

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

О «проблемах» молодых предпринимателей (стартаперов) в России простыми словами

Reading time1 min
Views2.9K
Дмитрий Потапенко как всегда четко и по-простому рассказывает о «проблемах» предпринимательства в России.

«У нас до сих пор совковый подход к себе… Якобы, у нас проблема с мотивацией… Если ты не хочешь, урод, то тебя, урода, невозможно что-то заставить делать» (с) Потапенко

Соревнование разработчиков с призовым фондом в $100000 и первая партнерская конференция для участников Галереи Evernote

Reading time4 min
Views5.6K
image
За последние несколько лет вокруг Evernote сформировалось замечательное сообщество пользователей, разработчиков и партнеров. Вместе мы создаем первую глобальную мировую платформу внешней памяти, и это делает поддержку и взаимодействие с нашей экосистемой одной из самых важных (и полезных) задач. В связи с этим мы рады объявить о первом мероприятии, посвященном экосистеме сервиса, — конференции для участников Галереи Evernote под названием Evernote Trunk Conference (ETC), а также о первом Соревновании разработчиков. Ниже мы расскажем об этих событиях подробнее.
Читать дальше →

Information

Rating
Does not participate
Location
Владимирская обл., Россия
Date of birth
Registered
Activity