Как стать автором
Обновить
9
0
Maxim Kuzovlev @KY3EH

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

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

Аутентификация в OpenVPN c помощью Рутокен ЭЦП

Время на прочтение4 мин
Количество просмотров33K
image
OpenVPN — кроссплатформенное, гибкое и удобное решение для организации VPN. Для допуска в виртуальную сеть, построенную на базе OpenVPN, клиент должен авторизоваться. В OpenVPN это можно сделать 3 способами:
  • по логину и паролю
  • по ключу и сертификату в файлах
  • по ключу и сертификату на «борту» криптографического USB-токена или смарт-карты
Последний способ является наиболее безопасным. В топике будет описана авторизация в OpenVPN с помощью криптографического USB-токена Рутокен ЭЦП. Рутокен ЭЦП надежно защищен PIN-кодом от несанкционированного доступа и блокируется при исчерпании попыток ввода PIN-кода, поэтому злоумышленник не попадет в VPN даже в случае кражи токена. Кроме того, в Рутокен ЭЦП аппаратно реализованы алгоритмы ГОСТ и RSA, поэтому аутентификация производится «на борту» токена. Благодаря этому закрытый ключ никогда не покидает токен и его невозможно украсть из оперативной памяти компьютера с помощью троянов.

В топике будет показано, как развернуть тестовый VPN, а также корпоративный УЦ на базе open source приложения XCA. С помощью УЦ будет создан ключ и сертификат сервера OpenVPN и произведена инициализация токена клиента. Затем настроим клиент OpenVPN таким образом, чтобы пользователь мог авторизоваться в OpenVPN с помощью Рутокен ЭЦП.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии60

Help, my database is corrupt. Now what?

Время на прочтение12 мин
Количество просмотров40K
Поврежденная база данных — это, наверное, один из худших ночных кошмаров большинства администраторов баз данных. Результатом повреждения являются простои, вопли менеджеров и всякие другие неприятные штуки.
В этой статье я объясню что нельзя делать с поврежденной базой данных и опишу кое-что из того, что должно быть сделано, некоторые виды повреждений и как их можно исправить.

Как обнаружить, что база данных повреждена


Обычно повреждения превосходно обнаруживаются при попытке доступа к поврежденной странице. Запросы, бэкапы или процедуры реиндексации завершаются ошибками с высокими уровнями серьезности.
Вот пара примеров системных сообщений при обнаружении повреждения БД:
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xfdff74c9; actual: 0xfdff74cb). It occurred during a read of page (1:69965) in database ID 13 at offset 0x0000002229a000 in file 'D:\Develop\Databases\Broken1.mdf'.
Attempt to fetch logical page 1:69965 in database 13 failed. It belongs to allocation unit 72057594049069056 not to 281474980642816.
Основная проблема заключается в том, что если проверки целостности базы данных не производятся на постоянной основе, то повреждение может быть обнаружено спустя часы, дни и даже месяцы, после того, как оно образовалось, в тот момент, когда уже сложно будет что-то исправить.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии15

Восстановление расфокусированных и смазанных изображений

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

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



Я не стал использовать замученную Лену, а нашел свою фотку Венеции. Правое изображение честно получено из левого, причем без использования ухищрений типа 48-битного формата (в этом случае будет 100% восстановление исходного изображения) – слева самый обычный PNG, размытый искусственно. Результат впечатляет… но на практике не все так просто. Под катом подробный обзор теории и практические результаты.
Осторожно, много картинок в формате PNG!
Читать дальше →
Всего голосов 291: ↑289 и ↓2+287
Комментарии93

Разработка производительного игрового сервера на Netty + Java

Время на прочтение5 мин
Количество просмотров55K
Piccy.info - Free Image Hosting

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

Читать дальше →
Всего голосов 63: ↑57 и ↓6+51
Комментарии206

Высокопроизводительный NIO-сервер на Netty

Время на прочтение9 мин
Количество просмотров129K
Преамбула

Здравствуйте. Я являюсь главным разработчиком крупнейшего в СНГ сервера Minecraft (не буду рекламировать, кому надо, те знают). Уже почти год мы пишем свою реализацию сервера, рассчитанную на больше чем 40 человек (мы хотим видеть цифру в 500 хотя бы). Пока всё было удачно, но последнее время система начала упираться в то, что из-за не самой удачной реализации сети (1 поток на ввод, 1 на вывод + 1 на обработку), при 300 игроках онлайн работает более 980 потоков (+ системные), что в сочетании с производительностью дефолтного io Явы даёт огромное падение производительности, и уже при 100 игроках сервер в основном занимается тем, что пишет/читает в/из сети.

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

Здесь я постараюсь расписать серверную часть работы с сетью через Netty, может быть это кому-то будет полезно.
Читать дальше →
Всего голосов 76: ↑75 и ↓1+74
Комментарии64

Как объединить две Wi-Fi сети, или работа роутера в режимах repeater и repeater bridge

Время на прочтение5 мин
Количество просмотров289K
Доброго времени суток.

В моем доме пока нет возможности подключить интернет. Если вывесить Wi-Fi адаптер за окно можно поймать несколько сетей кафе с бесплатным интернетом. Однако хочется чтобы Интернет был по всей квартире. Можно из Wi-Fi роутера сделать репитер, но тогда домашняя сеть оказывается открытой для других. В результате копаний Интернета и бесед на форуме было найдено решение как брать Интернет из открытой беспроводной сети и раздавать его в закрытой сети с шифрованием.

Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии35

Как написать дополнение для GIMP на языке Python

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

Или Script-Fu — это так называемый «фильтр массовости»? Далеко не каждый может с ним разобраться и большинство даже не пытаются делать какие-то плагины к GIMP.

RPG


Введение


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

В качестве языков, на которых можно писать дополнения, годятся Scheme и Python. Существует возможность писать дополения и на других языках (Perl, Tcl/Tk и т.д.), но модули, которые реализуют эту возможность, плохо поддерживаются либо вовсе не работают со свежими версиями GIMP.

Избрав языком для написания дополнения Scheme, вы автоматически оказываетесь в выигрыше, так как не существует в мире такой сборки GIMP-а, в которую бы интерпретатор Scheme не входил, и написаное вами дополнение гарантировано будет работать на всех платформах «из коробки», однако, писать на Scheme — то ещё удовольствие… Scheme является диалектом LISP. LISP — это аббревиатура, расшифровывается как LISt Processing, то есть, язык для обработки списков. Существует и другая расшифровка: Language of Idiotic Silly Parentheses (язык идиотских глупых скобок), спорное, но не лишенное смысла утверждение, — несоблюдение баланса скобок — один из главных источников ошибок программы, написанной на LISP и ему подобных. Далеко не каждый может разобраться с непростым синтаксисом этого языка, и большинство даже не пытаются писать какие-то дополнения для GIMP. Но сложный синтаксис — это мелочь по сравнению с отсутствием ряда возможностей. Например, нельзя использовать свой графический интерфейс, сохранить настройки дополнения в конфигурационный файл, подключить некий внешний модуль с дополнительными функциями и т.д. и т.п. Но есть язык, лишённый большинства недостатков Scheme и обладающий рядом достоинств. Этот язык — Python. О нём и пойдёт речь.
Читать дальше →
Всего голосов 72: ↑66 и ↓6+60
Комментарии22

Моделирование большого количества взаимодействующих друг с другом частиц

Время на прочтение6 мин
Количество просмотров30K
Рассмотрим ситуацию, когда необходимо обрабатывать столкновения между объектами. Как вы в этом случае поступите? Вероятно, самым простым решением будет проверить каждый объект с каждым другим объектом. И это правильное решение, и все будет замечательно до тех пор пока объектов не много. Как только их станет порядка нескольких тысяч, вы заметите, что все стало как-то медленно работать. А если частиц несколько десятков тысяч или сотен? Тогда все замрет. Вот здесь уже интересно, на какие хитрости и оптимизации вы пойдете, чтобы решить такую проблему.

Для простоты, будем рассматривать 2D случай, частицы круглые, радиус частиц у всех одинаковый.

Содержание


1. Обзор алгоритмов
1.1. Полный перебор
1.2. Sweep & Prune
1.3. Регулярная сеть
2. Некоторые оптимизации
2.1. Sweep & Prune
2.2. Регулярная сеть
3. Сравнение скорости выполнения
4. Приложение (программа и исходный код)
5. Заключение

Читать дальше →
Всего голосов 147: ↑145 и ↓2+143
Комментарии45

Пара слов про установку Oracle на Ubuntu

Время на прочтение2 мин
Количество просмотров41K
Не так давно мне нужно было быстро поднять маленькую виртуалку под Linux, чтобы проверить переносимость одного модуля в своем приложении, написанного на Java и вызывающего Oracle SQL Loader через java.lang.Process API.

Поскольку, как известно, Oracle SQL Loader не входит в поставку Oracle Instant Client, то для такой задачи надо или копировать руками нужные библиотеки с машины, где установлен сервер, либо ставить на этой виртуалке полный сервер Oracle.

Установка Oracle Enterprise Edition под Ubuntu это задача не на 5 минут. Полная и точная (по словам автора — я сам пробовал многочисленные похожие инструкции, все равно полностью без ошибок поставить ни разу не удавалось) инструкция находится здесь — www.excession.org.uk/blog/installing-oracle-on-ubuntu-karmic-64-bit.html. Сравните, насколько это геморройнее и сложнее, чем установка того же Oracle EE под Windows — там запустил OUI (Oracle Universal Installer) и следуешь его указанием. Короче, отличный пример протекающей абстракции в Linux среде (хотя, казалось бы, user-friendly дистрибутив) в духе Джоэля Спольски.

Но для Express (XE) версии есть все же человеческое решение.

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

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

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

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

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

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

Есть такая профессия

Время на прочтение3 мин
Количество просмотров14K
Погода за окном в это утро совершенно не радовала. Не блистала она, конечно, и вчера, и днём ранее, но сегодня было как-то особенно мерзко. Осень наконец почувствовала всю свою власть и стремилась продемонстрировать её людям в виде туч, дождя и ветра.

Выходить из дому Антону совсем не хотелось. Но сегодня был особенный день. Сегодня его ждала Работа. Он спокойно собрался и вышел прямо в пелену городского тумана. Антон шел и думал о чём-то своём. Давно прошли те времена, когда перед выполнением заказа он переживал или терзался муками совести. В конце концов, его труд не был преступлением, хотя и был причиной ненависти многих людей. Это просто работа и кто-то должен её делать. У него получалось лучше многих.
Читать дальше →
Всего голосов 197: ↑144 и ↓53+91
Комментарии60

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

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

Вступление



К написанию данной статьи меня подтолкнул не очень давно завершившийся проект. Как и в любом другом проекте, в нем были и ошибки (в том числе и при оценке), и проблемы и интересные их решения, и, несмотря ни на что, боевой дух команды, и желание сдать проект во время, и переработки и таки сдача проекта в срок, и долгожданный отпуск. Все это стоит отдельной статьи. Но главное — был бесценный опыт, на основании которого создана эта статья.
Очень часто, мы оцениваем проект и сильно ошибаемся. И вроде как из-за мелочей, которые появляются по ходу проекта, но которые, в действительности, можно было бы и обнаружить и учесть заранее.
Статья содержит простые и в тоже время полезные рекомендации и метод расчета оценок трудозатрат проектов и будет интересна руководителям проектов, архитекторам, системным аналитикам, продавцам ИТ решений и всем остальным, кто занимается оценкой работ по проектам с фиксированной ценой (fixed price projects).
В статье мы займемся только оценкой трудозатрат по работе над проектом, оценка длительности выполнения и стоимости – это совсем другая история.
В статье я описываю свой личный опыт оценки проектов, и,
конечно же, у вас могли быть другие ситуации и свои методы и
рекомендации оценивания.
Для большего понимания сути, смысла и «духа» статьи рекомендую сначала просмотреть:
  • выступление Сергея Мартыненко «Написание тестов, как вид тестирования требований»[1], на которое я буду часто ссылаться в ходе данной статьи. Важно понимать, что правильно сформулированные цели и требования – это большой и важнейший шаг к успеху проекта
  • и презентацию Сергея Бережного
    «My Story: «Путь овертаймов» [2]. По большому счету данная презентация к теме статьи не имеет, но имеет отношение к неправильно оцененным трудозатратам.

Статья содержит такие разделы:


  • Украинские реалии при выполнении проекта
  • Проблемы и их решения
  • Подготовка к оценке
  • Перечень работ для оценивания
  • Оценка работ по написанию кода
  • Цифры и коэффициенты из практики
  • Пример расчета

Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии15

Подключаем Рутокен ЭЦП к OpenSSL

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

Как известно, OpenSSL версии 1.0.0 и старше поддерживает российские криптоалгоритмы ГОСТ, причем поддержка этих алгоритмов полнофункциональна: реализованы подпись и шифрование в форматах PKCS#7, CMS, S/MIME в соответствии с российскими стандартами и RFC; протокол TLS с поддержкой российских шифрсьютов и т.п.

Таким образом, OpenSSL полностью совместим с проприетарными средствами криптозащиты российских производителей.

Для поддержки ГОСТов в него добавлен специальный «плагин» — engine gost. Вместе с тем существуют криптографические USB-токены с аппартной реализацией российских криптоалгоритмов на «борту». Примером такого токена является Рутокен ЭЦП, который, кстати сказать, сертифицирован как СКЗИ по классу КС2. Рутокен ЭЦП можно подключить к OpenSSL таким образом, что криптографические операции будут делаться на «борту» токена.

Для Рутокен ЭЦП имеется специальный кроссплатформенный плагин к OpenSSL — engine pkcs11_gost, который позволяет использовать аппаратную релизацию ГОСТов через стандартный интерфейс OpenSSL.

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии8

NAT не firewall, повторим еще разок

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


Посмотрите на рисунок. Вот так конфигурируется классический NAT на маршрутизаторе Cisco, допустим там больше ничего не сконфигурировано. А теперь ответьте сами себе на вопрос. Может ли при определенных условиях кто-либо обратиться извне на RDP порт (TCP 3389) супер секретного сервера 192.168.0.250 и попытаться подобать пароль к нему. Уточним, что сервер стоит одиноко в сети и никуда сам не обращается (имеется в виду, что на нем нет никаких троянов, автоматических обновлений и прочих прелестей).

Считаете — нет? Вспомним анекдот.

Лекция по филологии. Старый профессор рассказывает:

— В некоторых языках мира двойное отрицание означает согласие. В других, двойное отрицание так и остается отрицанием. Но, нет ни одного языка в мире, в котором двойное согласие означает отрицание. Голос с задней парты:
- Ну да, конечно, профессор.
Всего голосов 160: ↑148 и ↓12+136
Комментарии55

Выложены дополнительные сборки Android-x86 4.0 под x86

Время на прочтение1 мин
Количество просмотров7.8K
На www.android-x86.org выложены дополнительные сборки, предназначенные для запуска на x86 платформе.

Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии45

Разработка на Java и OpenCL: Дорога в облака

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


В статье рассматривается использование платформы Java для разработки совместно с OpenCL, преимущества и недостатки этого подхода. Сочетание этих технологий в разработке ПО в перспективе позволит использовать всю мощь облачных вычислений и OpenCL
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии13

Живой пример применения гибкого подхода к разработке ПО в российском стартапе

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

Привет, хабрадруг. Считаешь ли ты, что waterfall (каскад) при разработке ПО — это единственный расово-верный подход? Да или нет — спеши под кат.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии40

Как не надо писать факториал в Java

Время на прочтение10 мин
Количество просмотров105K
Перевод этой статьи уже был однажды опубликован на хабре, но там почему-то осталась за кадром самая важная часть. Ниже — полный перевод.

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

Если вам надо написать факториал на Java, то большинство из ваc, вероятно, начнёт с чего-нибудь
такого
Всего голосов 201: ↑165 и ↓36+129
Комментарии37

Бизнес в США из России. Часть II. Деньги и банки

Время на прочтение11 мин
Количество просмотров66K
Сегодня попробую осветить денежные вопросы.
Банковский счет, карты, платежи, PayPal и все такое.
Это продолжение топика HOWTO: свой бизнес в США из России, если кто пропустил.
Читать дальше →
Всего голосов 129: ↑128 и ↓1+127
Комментарии59

HOWTO: свой бизнес в США из России

Время на прочтение6 мин
Количество просмотров157K
    Наверняка многие из нас хоть раз думали про себя: «Черт побери, и везет же этим американцам!». Это касается многого, от магазинов с доставкой «только в пределах 48 континентальных штатов» до вполне серьезных контрактов, которые срываются только потому, что потенциальный заказчик в США категорически не желает иметь дело с иностранцами.

    В этой статье я попробую осветить процесс создания и администрирования американской корпорации для резидента РФ. Наверняка многие из фактов для самих американцев покажутся тривиальными, однако для жителя России все куда сложнее — увы, это данность. Чтоб не сказать — это Родина, сынок. Оговорюсь сразу — я все это проделал более 2 лет назад, так что, некоторые детали могут быть не совсем актуальны. Но вряд ли что-то поменялось принципиально.
Читать дальше →
Всего голосов 402: ↑398 и ↓4+394
Комментарии184

Информация

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