Pull to refresh
-16
@eikhnerread⁠-⁠only

User

Send message

Почему я люблю IKEv2 больше других VPN

Reading time5 min
Views197K


Сейчас все вокруг настраивают VPN для удаленных сотрудников. Мне больно смотреть, как люди устанавливают монструозные глючные программы, настраивают какие-то сертификаты, устанавливают драйвера TUN/TAP и делают множество сложных операций, в то время как лучшее решение уже встроено в операционную систему.

IKEv2 — это современный протокол VPN, разработанный Microsoft и Cisco. Он используется по умолчанию для новых VPN-подключений в Windows, macOS, iOS. Он быстрее и безопаснее большинства VPN-протоколов и может легко настраиваться на стороне клиента в два клика без использования сторонних программ.

Я считаю, что IPsec IKEv2 отлично подходит не только для соединения серверов, но и для обычных VPN-подключений конечных пользователей. В этом посте я постараюсь убедить вас использовать IPsec IKEv2 для обычных домашних пользователей вместо OpenVPN.
Читать дальше →

Криптографические решения. От криптопровайдеров до браузерных плагинов

Reading time11 min
Views57K
Производители средств криптографической защиты информации (СКЗИ) предлагают различные механизмы для интеграции криптосредств в информационные системы. Существуют решения, ориентированные на поддержку систем с Web-интерфейсом, мобильных и десктопных приложений, серверных компонентов. СКЗИ интегрируются в приложения Microsoft и в продукты Open Source, обеспечивают поддержку различных прикладных протоколов и форматов электронной подписи.

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

В данном материале сделана попытка классифицировать средства криптографической защиты информации.
  • Рассмотрены в основном СКЗИ, использующиеся на клиентских местах для защиты клиент-серверных соединений по протоколу TLS, для организации ЭЦП, шифрования передаваемых данных;
  • Не рассматриваются СКЗИ, применяемые для создания VPN и шифрования файловой системы, хранимых данных, а так же УЦ;
  • Отдельно выделены аппаратные криптографические устройства.

Классификация построена на основе:
  • технологий интеграции (CryptoAPI, Active-X, NPAPI и др.), которые поддерживают СКЗИ для встраивания в приложения и прикладные системы;
  • интерфейсов, которые предоставляют СКЗИ для встраивания в приложения и прикладные системы.

Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформах

Общая схема классификации приведена в таблице:
Криптопровайдеры Нативные библиотеки (openssl-style, PKCS#11, NSS, собственные интерфейсы) Локальные прокси Браузерные плагины Облачная подпись Браузеры с российской криптографией
Почтовые клиенты с российской криптографией Российская криптография в фреймворках, платформах, интерпретаторах Настольные криптографические приложения Криптография в BIOS UEFI Сервис-провайдеры ЭЦП Эмуляторы доверенной среды
Аппаратные средства

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

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

Выразительный JavaScript: Обработка событий

Reading time19 min
Views272K

Содержание




Вы властны над своим разумом, но не над внешними событиями. Когда вы поймёте это, вы обретёте силу.
Марк Аврелий, «Медитации».


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

Обработчики событий


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

Парсите, а не валидируйте

Reading time16 min
Views30K

Еще в декабре мне попалась одна совершенно замечательная статья на английском, посвящённая использованию системы типов языка для более широкого класса задач, для повышения надежности приложений и простоты рефакторинга. К сожалению, в тот момент я был слишком занят написанием статей по ФП, которые крайне важно было написать, пока свежи воспоминания. Но теперь, когда с этой задачей я справился, наконец дошли руки перевести эту замечательную заметку. Оригинальный язык примеров — Хаскель, но я решил переписать их на раст, для более широкого охвата аудитории. Однако язык тут совершенно неважен, советы этой статьи я применяю в ежедневной разработке на вполне себе "приземлённых" C# и TypeScript, так что если вы просто стараетесь писать надёжный и поддерживаемый код, то, вне зависимости от языка, статья вам будет в тему.


Благодарю за вычитку и помощь в переводе Hirrolot, funkill и andreevlex


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

Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных". Николай Самохвалов

Reading time18 min
Views7.9K

Предлагаю ознакомиться с расшифровкой доклада Николая Самохвалова "Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных"


Shared_buffers = 25% – это много или мало? Или в самый раз? Как понять, подходит ли эта – довольно устаревшая – рекомендация в вашем конкретном случае?


Пришло время подойти к вопросу подбора параметров postgresql.conf "по-взрослому". Не с помощью слепых "автотюнеров" или устаревших советов из статей и блогов, а на основе:


  1. строго выверенных экспериментов на БД, производимых автоматизированно, в больших количествах и в условиях, максимально приближенных к "боевым",
  2. глубокого понимания особенностей работы СУБД и ОС.

Используя Nancy CLI (https://gitlab.com/postgres.ai/nancy), мы рассмотрим конкретный пример – пресловутые shared_buffers – в разных ситуациях, в разных проектах и попробуем разобраться, как же подобрать оптимальную настройку для нашей инфраструктуры, БД и нагрузки.


Postgresso 20

Reading time10 min
Views5.5K

Жизнь продолжается. Продолжаем знакомить вас с самыми интересными новостями PostgreSQL

Главная новость


Feature Freeze
Функциональность 13-й версии PostgreSQL заморожена. Теперь только доработки и исправления багов. Список нового, вопреки многим ожиданиям, довольно обширный. Читайте нашу статью
Много ли нового в «Чёртовой дюжине», где много примеров. Но и в разделе Статьи Postgresso есть ссылки на статьи, посвященные отдельным фичам.

Релизы


Postgres Pro Enterprise 12.2.1

В этой версии совмещены новшества PostgreSQL 12 и особенности ветки Enterprise.
Расширение multimaster: как и в 11.x, и в других версиях Enterprise, рекомендуется использовать в конфигурации 2+1, когда один из узлов рефери. Подробнее в документации. А ещё теперь можно проверить согласованность данных на узлах кластера, используя функцию mtm.check_query().

В CFS теперь можно выбирать алгоритмы сжатия. Поддерживаются zstd (по умолчанию), zlib и pglz, но можно добавить другие алгоритмы.

Ещё одна ударная фича Enterprise — механизм PTRACK, необходимый для эффективной работы нашего приложения pg_probackup, — был основательно переработан и получил новый внешний API. Чтобы резервные копии, уже созданные с PTRACK в pg_probackup, работали в Postgres Pro Enterprise 12.x, нужно обновить pg_probackup до версии 2.2.6 или выше и настроить копирование PTRACK заново.

Важный патч дедупликации индексов B-tree (автор Анастасия Лубенникова, Postgres Professional) в PostgreSQL 13, но его функциональность уже есть в Enterprise 12.2.1. Причем исключение дубликатов можно отключить для создаваемых индексов, воспользовавшись параметром deduplicate_items команды CREATE INDEX. Об этом есть здесь.
Читать дальше →

Переход с reCAPTCHA на hCaptcha в Cloudflare

Reading time8 min
Views21K


Компания Cloudflare сообщила о том, что она недавно перешла с использования сервиса reCAPTCHA, предоставляемого Google, на сервис hCaptcha, который поддерживает компания Intuition Machines. В Cloudflare очень рады тому, что им удалось совершить этот переход, так как он способствует решению проблем со сбором конфиденциальной информации, актуальных в то время, когда компания полагалась на сервисы Google. Это, кроме того, способствует более гибкой настройке CAPTCHA-задач, предлагаемых посетителям сайтов. Данное изменение, в принципе, затрагивает всех пользователей Cloudflare. Поэтому компания решила поделиться подробностями о переходе на reCaptcha и подготовила материал, перевод которого мы сегодня публикуем.
Читать дальше →

Распределенные транзакции для разнородных баз данных в MS .NET

Reading time6 min
Views18K
Недавно, на одном интервью меня спросили, а работал ли я с распределенными транзакциями, в том смысле, что нужно было делать вставку/обновление таких записей при условии:

  1. Одной транзакции.
  2. Это могут быть несколько разнообразных баз данных таких как Oracle, MS SQL Server и PostgreSQL.
  3. Отклик на CRUD операцию может быть значительным.
  4. Последовательность вставки не важна.

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

Самые популярные структуры данных

Reading time9 min
Views28K
Что такое структура данных?
Проще говоря, структура данных — это контейнер, в котором хранятся данные в определенной компоновке (формате, или способе организации их в памяти). Эта «компоновка» позволяет структуре данных быть эффективной в одних операциях и неэффективной в других. Ваша цель — понять структуры данных, чтобы вы могли выбрать структуру данных, наиболее оптимальную для рассматриваемой проблемы.

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

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

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

Reading time7 min
Views23K
Применение шаблонов (или паттернов) в объектно-ориентированном программировании проистекает из желания делать код проще, надежнее и не изобретать велосипед, а также позволить эффективно организовать совместную работу программистов с разным уровнем подготовки давая им единую основу для понимания исходного кода в концептуальных рамках бизнес-логики приложения. Это означает, что изучение шаблонов проектирования является ключевым этапом в профессиональном росте программиста.

Как же правильно изучать шаблоны проектирования? Есть два подхода: скучный и доходчивый (Нравится моя классификация?). Скучный подход подразумевает академическое изучение списка паттернов с использованием абстрактных примеров. Лично я предпочитаю, противоположный – доходчивый подход, когда постановка задачи на относительно высоком уровне формулировки позволяет выбрать шаблоны проектирования. Хотя вы можете комбинировать оба подхода.

Итак, поехали?
Читать дальше →

Аутентификация в Kubernetes с помощью Dex: прикручиваем LDAP

Reading time8 min
Views12K
Сегодня я подробно разберу настройку аутентификации в Kubernetes с помощью Dex в связке с LDAP, а также покажу, как можно добавлять статических пользователей в Dex. 

В статье не буду останавливаться на основных принципах работы Dex, а сразу перейду к установке и настройке LDAP. Познакомиться с принципами работы Dex можно в этой статье.

Что будем делать:

  1. Установим OpenLDAP и настроим на нем поддержку STARTTLS. 
  2. Опишем структуру LDAP-каталога нашей организации.
  3. Включим поддержку OIDC (OpenID Connect) на kube-api-серверах.
  4. Получим SAN-сертификат для доменов, которые будет использовать Dex.
  5. Установим Dex и Dex-auth, где мы опишем LDAP-каталог и статических пользователей
  6. Сгенерируем kubeconfig нашего пользователя для работы с кластером.
  7. Настроим RBAC-авторизацию для групп и пользователей в кластере.

Итак, поехали.



Показывать буду на примере уже готового кластера Kubernetes с Helm версии 3 и Ingress, а также тремя доменными именами.
Читать дальше →

8 распространенных структур данных на примере JavaScript

Reading time10 min
Views108K


Звучит ли это знакомо: «Я начал заниматься веб разработкой после прохождения курсов»?

Возможно, вы хотите улучшить свои знания основ информатики в части структур данных и алгоритмов. Сегодня мы поговорим о некоторых наиболее распространенных структурах данных на примере JS.

1. Стек (вызовов) (Stack)




Стек следует принципу LIFO (Last In First Out — последним вошел, первым вышел). Если вы сложили книги друг на друга, и захотели взять самую нижнюю книгу, то сначала возьмете верхнюю, затем следующую и т.д. Кнопка «Назад» в браузере позволяет перейти (вернуться) на предыдущую страницу.
Читать дальше →

Интересные CSS-находки в новом дизайне Facebook

Reading time11 min
Views25K
Я любопытен. Мне всегда интересно открывать инструменты разработчика браузера и разбираться с тем, как сделан какой-нибудь сайт, на который я заглянул. Этот материал представляет собой мой первый рассказ о таких вот изысканиях. Дело в том, что я обнаружил некоторые интересные примеры использования CSS (по крайней мере, они показались интересными мне), о которых мне захотелось рассказать.



Речь идёт о CSS-находках в новом дизайне Facebook. Этот дизайн появился сравнительно недавно. Я его увидел пару недель назад. Сначала все элементы интерфейса казались мне необычно большими, но я привык к ним буквально за несколько дней. Здесь я расскажу обо всём том интересном, что я нашёл в дизайне Facebook.
Читать дальше →

Да мой старый laptop в несколько раз мощнее, чем ваш production server

Reading time5 min
Views99K
Именно такие претензии я услышал от наших девелоперов. Самое интересное, что это оказалось правдой, дав начало длительному расследованию. Речь пойдет про SQL servers, которые крутятся у нас на VMware.


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

ReSharper 8

Reading time9 min
Views35K
Привет, Хабр!

Вы уже наверное догадались, о чем этот пост. Да-да, мы рады представить вашему вниманию свежий ReSharper 8, наш плагин для повышения производительности и качества кода при разработке в Visual Studio. Благодаря участию в партнерской программе Microsoft Visual Studio нам удалось оперативно привести ReSharper 8.0 в соответствие с недавно объявленной версией Microsoft Visual Studio 2013 Preview. Теперь продукт поддерживает целых пять версий Visual Studio, включая 2005, 2008, 2010 и 2012. Когда произойдет окончательный выпуск Visual Studio 2013, при необходимости будет выпущено поддерживающее его обновление для ReSharper.



«Восьмерка» включила в себя улучшения и нововведения в следующих областях:
  • Автодополнение кода;
  • Навигация;
  • Поддержка XAML;
  • Поддержка CSS;
  • Новые рефакторинги;
  • Новый механизм коррекции ошибок «fix in scope»;
  • Шаблоны для создания наборов файлов;
  • Архитектурные инструменты в ReSharper;
  • Упрощение работы с расширениями.

Кроме того, ReSharper 8 выходит за рамки Visual Studio: теперь мы предоставляем бесплатный автономный инструмент с сотнями инспекций кода, доступных в ReSharper, а также функцией поиска дубликатов в коде. Новый продукт под названием ReSharper Command Line Tools можно интегрировать с вашим Continuous Integration сервером или системой контроля версий.

Детали под катом!

Инженерный спецназ: жара и холод

Reading time7 min
Views16K

Водитель этой машины почти сроднился с нами за время командировки. Кстати, с собой у него было ружьё. Спрашивали, зачем. Получили ёмкий ответ: «На всякий случай».

Банк, аудит системы хладоснабжения ЦОДа. Есть действующая служба эксплуатации банка, у них сервисный договор с организацией ООО «Весёлые медузы». Ребята работают, деньги получают. Но системы сбоят регулярно, останавливаясь по высокому давлению, когда температура на улице повышается.

Приезжаем на место на Дальний Восток разбираться. Собрали фреон, взвесили, сравнили проектный расчёт от производителя и фактическую заправку. Всё просто: предыдущий «сервис» налил в него больше, чем нужно.

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

— Зачем весы? Я же и так знаю, сколько туда надо. Был баллон 15 килограммов — стал весить примерно 12. Ну я и заправил три килограмма. Почему три? Ну этого же достаточно.

Или вот, например, крупный завод на Урале, там другая проблема. На монтаже подрядчик забыл добавить в хладоноситель присадку, которая снижает агрессивность среды. Через два года металлическую трубу разъело изнутри коррозией. Дальше — аварийная остановка оборудования. Мы приехали, перебрали. Почему изначально после запуска системы в работу никто не сделал отбор пробы хладоносителя, не провёл анализ химического состава для безопасной эксплуатации — вопрос.
Читать дальше →

Вечный сервер — как избавиться от ежемесячных платежей за хостинг

Reading time8 min
Views82K


— На вашем счету недостаточно средств для продления услуги. Вся ваша работа за 10 лет будет уничтожена в течение 2 рабочих дней.


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

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

Property-based тестирование для JavaScript и UI: необычный подход к автоматизированным тестам

Reading time11 min
Views9.4K
Elon Musk's Tesla Roadster
Falcon Heavy Demo Mission

Писать тесты скучно. А то, что скучно делать, постоянно откладывается. Меня зовут Назим Гафаров, я разработчик интерфейсов в Mail.ru Cloud Solutions, и в этой статье покажу вам другой, немного странный подход к автоматизированному тестированию.
Читать дальше →

Использование возможностей TypeScript в JavaScript без написания TypeScript-кода

Reading time5 min
Views13K
Я — большой любитель TypeScript. По возможности я стараюсь использовать этот язык в своих проектах. TypeScript даёт разработчику отчёты об ошибках и проверку типов в JavaScript и TypeScript-коде. Кроме того, тот, кто пишет на TypeScript, может пользоваться удобными возможностями по автозавершению кода, может, быстро и надёжно, выполнять рефакторинг. TypeScript — это первая линия обороны от ошибок в коде. Ещё одна сильная сторона этого языка заключается в том, что он позволяет, при написании программ, пользоваться самыми свежими возможностями JavaScript. При этом то, что получается при преобразовании TypeScript-кода в JavaScript, будет поддерживаться всеми браузерами. Это очень приятно.



Правда, не все фронтенд-проекты предусматривают применение TypeScript. Что если можно было бы пользоваться возможностями TypeScript, но при этом не переводить на него весь проект (и всю команду), и не добавлять в конвейер сборки проекта новый инструмент? Это возможно благодаря VS Code и JSDoc.
Читать дальше →

IDA Pro и техники реверс-инжиниринга

Reading time27 min
Views119K

0x00 start


; {EN} entry point, do nothing, just run _main {EN}


Статья для начинающих “воинов тьмы”, тех, кто хочет погрузиться в темную сторону силы: реверс-инжиниринг. На нашем “операционном столе” будет небольшой кустарный сервер, который работает по протоколу TCP/IP. Для анализа протокола обмена данными нам поможет стандарт де-факто в области реверса — IDA Pro.


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


Чего не будет в статье?

Поиска уязвимостей и разработки эксплоитов для Google Chrome или Apple iPhone… Поэтому если вы исследователь со стажем и с большим количеством CVE на счету, маловероятно, что вы найдете для себя что-то новое.



"Once you start down the dark path, forever will it dominate your destiny".

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

Information

Rating
Does not participate
Registered
Activity