Как стать автором
Обновить
37
0
Андрей @Drew003

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

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

Электронная подпись в браузере с помощью OpenSSL и СКЗИ Рутокен ЭЦП

Время на прочтение26 мин
Количество просмотров23K
UPDATE. Готовое решение для электронной подписи в браузере — Рутокен Плагин

Потребность в решениях, помогающих реализовать электронную подпись в «браузере», возрастает. Главные требования к таким решениям — поддержка российких криптоалгоритмов, обеспечение безопасности ключа и нормальное usability. В данном топике мы напишем браузерный криптографический java-апплет, в который интегрирован OpenSSL ГОСТ c модулем поддержки Рутокен ЭЦП. Этот апплет не требует установки какого-либо клиентского софта (кроме java-машины, конечно) и позволяет подписывать файлы через браузер в формате PKCS#7 с ипользованием аппаратной реализации российских криптографических стандартов на «борту» USB-токена Рутокен ЭЦП. Для демонстрации в топике будет дан пример HTML-страницы, использующей данный апплет. На странице можно сгенерить ключ внутри токена, создать заявку PKCS#10 на сертификат для этого ключа, получить тестовый сертификат, записать его на токен, подписать файл.

Архитектура решения представлена на рисунке:

image
Читать дальше →
Всего голосов 43: ↑36 и ↓7+29
Комментарии29

Поисковый движок IndexTank передан в open source

Время на прочтение1 мин
Количество просмотров3K
В октябре 2011 года профессиональная социальная сеть LinkedIn купила компанию IndexTank, которая занимается производством поисковых технологий. Очевидно, приобретена в первую очередь команда профессионалов под началом известного специалиста Диего Баша (Diego Basch), он же основатель и генеральный директор IndexTank, а в прошлом — один из ведущих разработчиков Inktomi. Как иногда бывает в таких случаях, прошлые продукты компании решили передать в open source. Диего Баш объявил, что исходные коды программного обеспечения IndexTank опубликованы под свободной лицензией Apache 2.0 и выложены на github.

indextank-engine: индексатор
indextank-service: API, BackOffice, Storefront и фреймворк Nebulizer для управления индексами

Поисковый движок IndexTank используется на многих крупных сайтах, в том числе Reddit, Wordpress (плагин для Wordpress) и BitTorrent. Он обеспечивает индексацию контента в реальном времени, поиск с учётом геолокации и т.д.

Программные интерфейсы позволяют разработчикам встраивать поиск IndexTank в свои приложения на Ruby, Java, .NET, Python, PHP и т.д. Документация по API здесь.
Всего голосов 31: ↑27 и ↓4+23
Комментарии13

IPv6 шлюз для локальной сети

Время на прочтение10 мин
Количество просмотров54K
Для проверки готовности локальной офисной сети к возможности перехода на протокол IPv6 мною был организован испытательный стенд на основе сервера с FreeBSD, являющийся шлюзом для доступа в IPv6 интернет и сервером популярных сетевых ресурсов (WEB, eMail, FTP). Выбор FreeBSD обусловлен наличием уже существующей виртуальной машины с этой системой. Далее я немного расскажу как всё было настроено (не в даваясь в теоретические подробности построения и адресации IPv6) и попытаюсь обрисовать ситуацию о готовности существующих систем и программ к использованию с IPv6 на примере тех сервисов, которые мне удалось протестировать, как со стороны клиента, так и со стороны сервера. Эксперименты активно проводились в период месяц «до» и месяц «после» «Дня IPv6» 8 июня 2011, поэтому сейчас ситуация с поддержкой в некоторых программах может измениться в лучшую сторону.
Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии12

Долго ли умеючи, или массовый запуск серверов с минимумом трудозатрат

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

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

Ниже пойдет речь о самом первом этапе конфигурирования серверного оборудования; о том, как быстро и в срок мы выполнили конкретную задачу, а не о написании оптимальных скриптов. В случае, если данная тема покажется вам интересной, мы с удовольствием расскажем и об установке ОС на сервера и настройке рабочего окружения, в чём тоже имеются свои тонкости.
Читать дальше →
Всего голосов 71: ↑58 и ↓13+45
Комментарии29

Реалистичные тени при помощи CSS3 без использования изображений

Время на прочтение7 мин
Количество просмотров143K
Привет, Хабр!

Хочу поделиться замечательным мастер-классом по созданию реалистичных теней для блоков на чистом CSS, найденном на просторах рунета по адресу http://mainview.ru/css/realistichnye-teni-pri-pomoshhi-css3-bez-ispolzovaniya-izobrazhenij. Естественно, для того, чтобы примеры работали как надо, необходим браузер с поддержкой CSS3.

image

Читать дальше →
Всего голосов 263: ↑253 и ↓10+243
Комментарии58

Проксируем Cookies на Nginx при помощи модуля lua-nginx

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


Я уже писал о том, как с помощью Nginx трансформировать контент на лету. С момента публикации статьи на базе описанного метода запущен и развивается реальный проект ecommerce. Помимо перевода и трансформации также реализован и SEO рерайт по заветам руководства для начинающих от Google.

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

В чем суть проблемы


Проблема заключается в том, что любой нормальный сервер приложений всегда выставляет Cookie, например для того, чтобы сохранять сессию клиента или корзину с его товаром. Если этот сервер (точнее его администратор) озабочен поддержанием определенного уровня безопасности, то он выставляет в теле Cookie домен и путь, например domain= backend.org; path=/path1. Наш Nginx запущенный в режиме Reverse Proxy замечательно меняет все ссылки в теле документов с backend.org на frontend.org, но не делает этого для кук! Это означает что браузер клиента отвергнет такие куки.

Этот вопрос с давних пор волнует умы администраторов nginx, в рассылках он всплывает по 1-2 раза в год. Большинство вопрошавших, по-видимому, решили свои проблемы подкручивая логику backendа, но не я! После очередного апдейта оригинального сайта стало понятно, что костыль с PHP + Curl тянуть больше невозможно и надо непременно найти решение с помощью Nginx!

Я вернул тему в рассылку, попутно перебирая варианты из ngx_http_perl_module и переменной $upstream_http_set_cookie, даже заглянул в дебри сорсов с призрачной надеждой написать модуль самому. Но все было неудачно пока в один прекрасный момент я не получил письмо от Mikhail Mazursky, который дал ценный совет. Благодаря этому совету я не только с легкостью решил задачу проксирования Cookie, но и получил новый инструмент, с помощью которого можно создать версию 2.0 своего проекта.

Решение


Название этого инструмента lua-nginx-module, который написан еще одним китайским самородком с корнями из Taobao. Из названия легко понять, что речь об языке скриптов Lua встроенном в Nginx — но это больше чем просто интерпретатор! Эти ребята создали полностью неблокируемую реализацию с производительностью десятки тысяч операций в секунду, которая имеет хуки ко всем событиям внутри Nginx. То что раньше можно было реализовать только написав свой модуль на C, теперь можно сделать несколькими строчками на Lua. Заинтересовались?
Тогда добро пожаловать под кат!
Всего голосов 64: ↑63 и ↓1+62
Комментарии18

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

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

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

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

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

В злых целях знания использовать не буду!
Всего голосов 189: ↑174 и ↓15+159
Комментарии43

Nginx + IPv6

Время на прочтение2 мин
Количество просмотров23K
Недавно написал топик про поддержку IPv6 в Windows 7/Vista/XP (это тут). Захотелось сделать поддержку IPv6 на своём сервере, где хостируются сайты, в итоге вот что получилось.
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии21

Mootools плагин для анимации AJAX-запросов без gif'ов

Время на прочтение2 мин
Количество просмотров3.4K
Захотелось как-то сделать анимацию выполнения ajax-запросов на чистом html+css и совсем без gif'ов. И сделал плагин для Mootools, который позволяет при добавлении одного файла Javascript получить различные по размеру, фону и типу анимированные иконки.

Плюсы:
  • Легкие. Отдельно взятый элемент весит не больше gif'а, а использовать его можно многократно стилизируя под разные фрагменты сайта/приложения.
  • Легко подключаются (см. пример ниже)
  • Кроссбраузерные. В отличие от суперкрасивых но CSS3 подобных элементов эти тестировались на IE 7+, Firefos 3+, Opera 11, Safari, Chrome, Mobile Safari 4+ и Android 2.2. Скорее всего будут работать и на IE6, Opera 10 и старших версиях Safari и Chrome, но не тестировалось.
  • Один файл для всех анимированных иконок сайта, а не отдельный gif на каждую ситуацию.
  • Базовый класс можно расширять дописывая свои анимации.
  • Это не связанно непосредственно с технологией, но тоже редко встречал, поэтому добавлю — некоторые анимации имеют режим in и out, что удобно для визуализации POST и GET запросов соответственно.
  • Я почему-то с детства не люблю анимированные gif'ы

И минусы:
  • В IE 9 элементы все равно оставлены квадратными. Хоть border-radius в нем и поддерживается, но имеет место баг (или фича) связанный с заливкой, который сходу обойти не удалось. Может кто подскажет как это можно сделать.
  • Теоретически может притормаживать на слабых машинах на старом браузере под нагрузкой. В тестах это не проявилось, но жизнь, как известно, от тестов отличается. Тестировалось на слабеньком нетбуке в IE 8 в режиме IE 7 и на моей виртуальной машине — слабее ничего не нашлось для тестов.
  • Наверняка в комментариях еще наберется...

А все остальное, как говорится, лучше один раз увидеть.
Смотреть
Всего голосов 34: ↑33 и ↓1+32
Комментарии20

Пять бесплатных инструментов для выбора цветовой схемы сайта

Время на прочтение2 мин
Количество просмотров233K
Один из самых важных факторов при создании уникального и узнаваемого дизайна — цвет. Грамотный выбор цветовой схемы может определить успех или провал сайта. Когда посетитель бросает первый взгляд на веб-страницу, то выбранные вами цвета посылают ему мгновенное сообщение об этой странице. К счастью, существует много инструментов, которые помогут выбрать правильную цветовую схему. Вот пять лучших из них.
Читать дальше →
Всего голосов 148: ↑134 и ↓14+120
Комментарии41

20 наиболее необходимых инструментов для проверки отображения сайта

Время на прочтение5 мин
Количество просмотров30K
Доступность контента и отображение информации на сайте чрезвычайно важна. Говоря простым языком, что хорошего может сделать то, что находится у вас на сайте, если определенные люди не смогут увидеть это? Конечно, этот новый модный дизайн с мелким шрифтом и малоконтрастными цветами для вас и ваших друзей выглядит классно, но вот что насчет тех, у кого слабое зрение, или тех, кто не различает некоторые цвета, или тех, у кого какие-либо другие проблемы со зрением — они ведь просто не смогут ничего найти, не говоря уже о том, чтобы прочитать хоть что-нибудь на вашем сайте. Вам надо, даже не «надо», а вы ДОЛЖНЫ сделать свой сайт доступным для как можно большего числа посетителей.

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

Читать дальше →
Всего голосов 38: ↑35 и ↓3+32
Комментарии11

GPT и WD Advanced format

Время на прочтение3 мин
Количество просмотров23K
Одна из внезапных проблем при использовании GPT — (если мы хотим увидеть приличную скорость записи) необходимость руками подстраивать положение раздела на дисках WD с Advanced format. Суть Advanced Format проста: внутри диск имеет 4к сектора, наружу они эмулируются как 512-байт. Если мы делаем запись двух секторов в пределах одного 4к блока, он записывается один раз. Если мы делаем запись двух секторов так, что задеваем два 4к-сектора — диску приходится читать два сектора, обновлять информацию и записывать их обратно. Плохо и медленно. Современные ОС используют 4к блоки для записи, так что если мы попадём правильно, то каждая операция записи будет просто записью, без чтения. Если же мы попадём неровно (например, 2кб из первого сектора и 2кб из второго), то мы получим огромные тормоза (см ссылку внизу на сайт IBM с статистикой «торможения» при ошибках в разметке).

WD, когда размышляла насчёт 512 VS 4k, не учла, что помимо MBR есть ещё GPT. В случае 2Тб дисков MBR ещё терпит, однако, впереди диски на 3Тб, и в них MBR просто математически не сможет обеспечить разделы и переход на GPT неизбежен.

Так что проблему GPT и WD нужно учитывать уже сегодня. Основным инструментом для манипуляций с GPT в настоящий момент является parted и его графическая версия gparted. К сожалению, gparted не умеет того, что нам нужно, так что всё последующее описывает использование parted.

Основная мысль: Все величины (начало, конец раздела) должны быть кратны 4кБ, или, что чуть проще, 8 секторам. Это требование WD advanced format.

Сама GPT занимает некоторый объём (33 сектора: 32 сектора GPT, 1 сектор — фальшивый MBR-затычка), так что первое кратное 8 число, с которым мы можем работать — 40 секторов. Оконечное число зависит от ёмкости диска, но тоже, желательно, кратное 8. Кроме того, GPT дублируется в конце диска, так что место в конце диска так же будет «обкусано».

Для наилучшей производительности нужно учесть размер PE для LVM — 4Mb (8192 сектора) и установить размер тома кратным количеству PE. В результате всех этих манипуляций мы потеряем чуть-чуть места (меньше 8Мб), но зато получим быстрый том, у которого будут отсутствовать «unused» килобайты в описании в LVM.

Помимо этого есть ещё мнение самого gparted, о том, что лучшее положение тома — кратно мегабайтам. Таким образом, итоговые требования звучат так: том должен начинаться и заканчиваться на величинах, кратных 4Мб.

Итак, создание LVM тома на WD'шном диске с Advanced Format:
Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии19

TOP'ай сюда

Время на прочтение5 мин
Количество просмотров177K
Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс "-top" получили и все остальные подобные утилиты в этом обзоре.

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

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

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.
Читать дальше →
Всего голосов 401: ↑389 и ↓12+377
Комментарии122

Масштабирование нагрузки web-приложений

Время на прочтение6 мин
Количество просмотров59K
С ростом популярности web-приложения его поддержка неизбежно начинает требовать всё больших и больших ресурсов. Первое время с нагрузкой можно (и, несомненно, нужно) бороться путём оптимизации алгоритмов и/или архитектуры самого приложения. Однако, что делать, если всё, что можно было оптимизировать, уже оптимизировано, а приложение всё равно не справляется с нагрузкой?
Читать дальше →
Всего голосов 109: ↑98 и ↓11+87
Комментарии38

Выбор VPS в Германии и установка на него Archlinux

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

Задача и выбор площадки


Задача: выбрать виртуальный сервер на стабильной немецкой площадке, с недорогим трафиком и ценой до 20 евро в месяц и установить archlinux.

VPS

Поиск по хабру дал несколько полезных статей и еще один ресурс от которых можно оттолкнуться.
В итоге выбор пал на трех претендентов: server4you.net, hetzner.de, hosteurope.de.
Читать дальше →
Всего голосов 48: ↑41 и ↓7+34
Комментарии81

Повышение производительности за счет блочного кеширования

Время на прочтение5 мин
Количество просмотров5.6K
Тема блочного кеширования и ssi не раз проскакивала на Хабре. Ниже я представлю еще одну реализацию, использующего блочное кеширование, а также исходники фреймворка, использующего эти принципы, которые можно найти тут. А как это работает — прочитать ниже.
схема кеширования блоками
Читать дальше →
Всего голосов 56: ↑49 и ↓7+42
Комментарии60

Большие потоки трафика и Linux: прерывания, маршрутизатор и NAT-сервер

Время на прочтение6 мин
Количество просмотров60K
Написано по следам публикации Большие потоки трафика и управление прерываниями в Linux

В нашей городской сети более 30 тысяч абонентов. Суммарный объем внешних каналов — более 3 гигабит. А советы, данные в упомянутой статье, мы проходили еще несколько лет назад. Таким образом, я хочу шире раскрыть тему и поделиться с читателями своими наработками в рамках затрагиваемого вопроса.

В заметке описываются нюансы настройки/тюнинга маршрутизатора и NAT-сервера под управлением Linux, а также приведены некоторые уточнения по поводу распределения прерываний.

Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии54

Обращение интернет-компаний об ответственности за пользовательский контент

Время на прочтение4 мин
Количество просмотров9.6K
Владимир Долгов, Генеральный директор Google Россия

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

Интернет-сервисы, как и любые другие технические инструменты, могут использоваться не только во благо, но и во вред. Контент, который пользователи сами размещают в интернете, может оказаться не соответствующим требованиям законодательства. С ростом размеров и значимости интернета эта проблема привлекает все больше и больше внимания. При этом понятно, что в ее решении невозможны крайности — ни когда все разрешено и царит безответственность, ни когда действует общий запрет и главенствует цензура.
Читать дальше →
Всего голосов 135: ↑104 и ↓31+73
Комментарии69

Информация

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