Pull to refresh
47
Karma
23.7
Rating

немного программист, немного админ

  • Followers 15
  • Following 5
  • Posts
  • Comments

Отклонение RPKI-Недопустимых (Invalid) Маршрутов BGP

OTUS corporate blog Network technologies *
Translation

Назначение

Полноценный фильтр для любой конфигурации BGP (Border Gateway Protocol) должен отклонить RPKI (Resource Public Key Infrastructure)-недопустимые (invalid) маршруты BGP.

При этом определяется, является ли маршрут RPKI недопустимым (invalid) или нет, в соответствии с RFC 6811 и RFC 8893.

Считается небезопасным манипулировать атрибутами пути (Path Attributes) BGP (например, LOCAL_PREF или COMMUNITY) на основе состояния проверки происхождения (Origin Validation state) RPKI. Сделать атрибуты пути BGP зависимыми от состояний проверки RPKI означает привнести излишнюю хрупкость в глобальную систему маршрутизации, как это объяснено здесь. Кроме того, использование RFC 8097 НАСТОЯТЕЛЬНО НЕ РЕКОМЕНДУЕТСЯ. RFC 8097 стал причиной проблем для операторов сетей с несколькими поставщиками.

В проекте документации RPKI перечислены различные программные пакеты Relaying Party.

Читать далее
Total votes 6: ↑5 and ↓1 +4
Views 1.3K
Comments 0

Стоит ли переходить с Powershell DSC на Ansible и как это сделать

Mindbox corporate blog IT Infrastructure *DevOps *
Об IaC под Windows пишут мало, потому что DevOps/SRE ассоциируется в основном c Linux и Kubernetes. Мы решили исправить эту ситуацию и сравнить инструменты, которыми можно управлять IaC на базе Windows. Статья будет полезна разработчикам, которые работают с Windows-инфраструктурой и выбирают способы управления, и тем, кто уже внедрил Powershell DSC или Ansible, но сомневается в своем решении. Ниже поделимся опытом и расскажем:
  • как устроен Powershell DSC и чем он отличается от Ansible при управлении инфраструктурой на Windows;
  • почему мы перешли на Ansible;
  • с какими проблемами столкнулись и как их решали;
  • как соотносятся ожидания и реальность после перехода на Ansible;
  • кому стоит выбрать Powershell DSC, а кому — Ansible.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 2.9K
Comments 5

Всё, о чём должен знать разработчик Телеграм-ботов

Instant Messaging *API *

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

Подробный гайд о том, как работать с ботами — под катом.

Читать далее
Total votes 127: ↑127 and ↓0 +127
Views 91K
Comments 61

Устойчивое хранение данных и файловые API Linux

RUVDS.com corporate blog System administration *Data storage *
Translation
Я, исследуя устойчивость хранения данных в облачных системах, решил проверить себя, убедиться в том, что понимаю базовые вещи. Я начал с чтения спецификации NVMe для того чтобы разобраться с тем, какие гарантии, касающиеся устойчивого хранения данных (то есть — гарантии того, что данные будут доступны после сбоя системы), дают нам NMVe-диски. Я сделал следующие основные выводы: нужно считать данные повреждёнными с того момента, как отдана команда записи данных, и до того момента, как завершится их запись на носитель информации. Однако в большинстве программ для записи данных совершенно спокойно используются системные вызовы.

В этом материале я исследую механизмы устойчивого хранения данных, предоставляемые файловыми API Linux. Кажется, что тут всё должно быть просто: программа вызывает команду write(), а после того, как работа этой команды завершится, данные будут надёжно сохранены на диске. Но write() лишь копирует данные приложения в кеш ядра, расположенный в оперативной памяти. Для того чтобы принудить систему к записи данных на диск, нужно использовать некоторые дополнительные механизмы.



В целом, этот материал представляет собой набор заметок, касающихся того, что я узнал по интересующей меня теме. Если очень кратко рассказать о самом важном, то получится, что для организации устойчивого хранения данных надо пользоваться командой fdatasync() или открывать файлы с флагом O_DSYNC. Если вам интересно в подробностях узнать о том, что происходит с данными на пути от программного кода к диску, взгляните на эту статью.
Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Views 6.6K
Comments 2

Я принес вам решение проблемы с исключениями в C#. Но вам не понравится

VDSina.ru corporate blog Programming *Perfect code *.NET *C# *


Я каждый день пишу код на сишарпе, и натыкаюсь на одну проблему: я трачу кучу времени на то, чтобы решить, как быть, если что-то идёт не по плану.

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

Эти размышления меня измучили, и я систематизировал свои знания и идеи по обработке исключительных случаев.
Читать дальше →
Total votes 97: ↑74 and ↓23 +51
Views 37K
Comments 478

Потроха IPsec, меримся с TLS 1.3, ГОСТ и Go

Information Security *Cryptography *Go *
Приветствую! Очень хочется рассказать про устройство современного стэка IPsec протоколов ESPv3 и IKEv2. IPsec, как мне кажется, незаслуженно обходится многими стороной и детального разбора его работы, его протоколов и возможностей я не видел на русском языке. Кроме того, сделаю странное — сравню IPsec ESPv3 и IKEv2 (оба 2005-го года) с современным, модным, state-of-art TLS 1.3 2018-го года.


Почему я вообще так увлечён темой IPsec — возможно самого сложного стэка протоколов для защиты сетей? Ведь сложность это главный враг надёжности и безопасности! Во-первых, чем больше узнаёшь про его протоколы, особенно IKEv2, тем больше понимаешь как много возможностей в него закладывалось и впечатляешься его продуманностью, в отличии от распространённого подхода разработчиков «костыль костылём погоняет» и решением серьёзных проблем «пока гром не грянет». Во-вторых, IPsec протоколы хорошо продуманы с криптографической точки зрения и, даже старые ESP/IKEv1, фактически являются единственными промышленными массово используемыми протоколами в которых не было сколь либо серьёзных уязвимостей. Тот же SSL (1995-ый год) стал достойно продуманным только с версии 1.3. А нелюбовь к IPsec у многих связана с монструозной сложностью IKEv1, которой больше нет в v2.
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Views 9.3K
Comments 12

WSJ: Amazon анализирует продукцию сторонних продавцов и выпускает товары-конкуренты; Евросоюз подаёт в суд

Legislation in IT Finance in IT IT-companies

Еврокомиссия планирует подать в суд на компанию Amazon. Корпорацию могут обвинить в сборе данных от сторонних продавцов и использовании этой информации для разработки собственных товаров. Об этом сообщает The Wall Street Journal.

Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Views 16K
Comments 151

Облачный 1С. Все безоблачно

Билайн Бизнес corporate blog IT Infrastructure *Cloud services
Переезд — это всегда стресс, каким бы он ни был. Съехать из менее комфортабельной двушки в более комфортабельную, переехать из города в город, или вообще взять себя в руки и съехать от мамы в свои 40. С переносом инфраструктуры всё тоже не так просто. Одно дело, когда у тебя небольшой сайт на пару тысяч уников в день, и ты готов потратить на перенос данных несколько часов и пару кружек кофе. Другое — когда у тебя сложная инфраструктура с кучей зависимостей и костылей, подставленных под определенные места в конкретном облаке.

А если к этому еще и добавить 1С, то процесс начинает играть новыми красками.



Меня зовут Сергей Кондратьев, я отвечаю за наше полосатое облако, BeeCLOUD, и в этом посте я расскажу вам про переезд в наше облако компании «АэроГео».
Читать дальше →
Total votes 22: ↑15 and ↓7 +8
Views 6K
Comments 15

Как я чинил поломанную базу и что из этого вышло

Microsoft SQL Server *
Sandbox
Однажды ко мне обратились с просьбой помочь «исправить» одну базу данных. CHECKDB при проверке выдавал список ошибок, некоторые из которых отмечались как «неисправимые». Приложение при этом работало, но все равно было как-то неспокойно.

Да, правильным решением в такой ситуации было бы взять бэкап от того момента, когда ошибки еще не появляются, локализовать испорченные данные и перезаписать их из чистой копии. Но… как это часто бывает, ошибку поймали слишком поздно, так что восстанавливаться, по сути, было не с чего. С другой стороны – был бы бэкап, не было бы этой истории.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Views 6.1K
Comments 3

Сохраняем данные в EEPROM на Arduino транзакционно

Programming microcontrollers *Developing for Arduino *DIY
Наличие EEPROM дает разработчикам удобный инструмент для сохранения конфигурационных параметров или медленно меняющегося состояния, которое должно переживать выключение питания. В этой статье мы рассмотрим, как это делать максимально безопасно и удобно, чтобы ничего не забывать и не вспоминать того, чего не было.
Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Views 14K
Comments 50

Очередь задач в PostgreSQL

PostgreSQL *Programming *SQL *

Очередь слонов - pixabay.com


Для организации обработки потока задач используются очереди. Они нужны для накопления и распределения задач по исполнителям. Также очереди могут обеспечивать дополнительные требования к обработке задач: гарантия доставки, гарантия однократного исполнения, приоритезация и т. д.


Как правило, используются готовые системы очередей сообщений (MQ — message queue), но иногда нужно организовать ad hoc очередь или какую-нибудь специализированную (например, очередь с приоритетом и отложенным перезапуском не обработанных из-за исключений задач). О создании таких очередей и пойдёт речь ниже.


Ограничения применимости


Предлагаемые решения предназначены для обработки потока однотипных задач. Они не подходят для организации pub/sub или обмена сообщениями между слабо связанными системами и компонентами.


Очередь поверх реляционной БД хорошо работает при малых и средних нагрузках (сотни тысяч задач в сутки, десятки-сотни исполнителей), но для больших потоков лучше использовать специализированное решение.


Суть метода в пяти словах


select ... for update skip locked
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Views 16K
Comments 58

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

System administration *Network hardware
Sandbox
Уточнение: решение настроено для D-Link DFL, cisco 29xx и WatchGuard Firebox, но подходит для всего, что умеет делать бэкапы при подключении по ssh и/или заливать их по расписанию/событию на ftp/tftp сервер.

Всё началось с того, что мой знакомый программист спросил: «А почему ты не хранишь сетевые конфиги в системе контроля версий?». А и правда – подумала я – почему? Большая часть конфигурационных файлов может быть выгружена в текстовом формате (ну, это бинарники, конечно, но в текстовом редакторе открываются и отображается читабельная информация).
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Views 8.1K
Comments 14

CreateRemoteThread для Linux

Abnormal programming *System Programming *C *Development for Linux *
Tutorial

Мицуха несёт новые потокиВ WinAPI есть функция CreateRemoteThread, позволяющая запустить новый поток в адресном пространстве другого процесса. Её можно использовать для разнообразных DLL-инъекций как с нехорошими целями (читы в играх, кража паролей, и т. д.), так и для того, чтобы на лету исправить баг в работающей программе, или добавить плагины туда, где они не были предусмотрены.


В целом эта функция обладает сомнительной прикладной полезностью, поэтому не удивительно, что в Linux готового аналога CreateRemoteThread нет. Однако, мне было интересно, как он может быть реализован. Изучение темы вылилось в неплохое приключение.


Я подробно расскажу о том, как с помощью спецификации ELF, некоторого знания архитектуры x86_64 и системных вызовов Linux написать свой маленький кусочек отладчика, способный загрузить и исполнить произвольный код в уже запущенном и работающем процессе.


Для понимания текста потребуются базовые знания о системном программировании под Linux: язык Си, написание и отладка программ на нём, осознание роли машинного кода и памяти в работе компьютера, понятие системных вызовов, знакомство с основными библиотеками, навык чтения документации.

Читать дальше →
Total votes 76: ↑75 and ↓1 +74
Views 11K
Comments 27

Функциональное программирование — это не то, что нам рассказывают

Programming *Perfect code *.NET *C# *Functional Programming *

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



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


int Factorial(int n)
{
    Log.Info($"Computing factorial of {n}");
    return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}

чем ужасные императивные программы вроде


int Factorial(int n)
{
    int result = 1;
    for (int i = 2; i <= n; i++)
    {
        result *= i;
    }
    return result;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

Читать дальше →
Total votes 267: ↑259 and ↓8 +251
Views 104K
Comments 795

Чем плох GNU make?

Website development *
GNU make — широко известная утилита для автоматической сборки проектов. В мире UNIX она является стандартом де-факто для этой задачи. Являясь не такой популярной среди Windows-разработчиков, тем не менее, привела к появлению таких аналогов, как nmake от Microsoft.

Однако, несмотря на свою популярность, make — во многом ущербный инструмент.
Читать дальше →
Total votes 120: ↑104 and ↓16 +88
Views 23K
Comments 84

Обсуждаем PostgREST — open source веб-сервер на Haskell

1cloud.ru corporate blog Website development *PostgreSQL *Haskell *API *
Рассказываем об инструменте, который позволяет настроить API для работы с запросами PostgreSQL. Говорим о возможностях, достоинствах и недостатках утилиты, а также об альтернативных решениях.

Читать дальше →
Total votes 23: ↑18 and ↓5 +13
Views 7.5K
Comments 4

О чем молчит EXPLAIN, и как его разговорить

Тензор corporate blog PostgreSQL *Database Administration *
Sandbox
Классический вопрос, с которым разработчик приходит к своему DBA или владелец бизнеса — к консультанту по PostgreSQL, почти всегда звучит одинаково: «Почему запросы выполняются на базе так долго?»

Традиционный набор причин:

  • неэффективный алгоритм
    когда вы решили сделать JOIN нескольких CTE по паре десятков тысяч записей
  • неактуальная статистика
    если фактическое распределение данных в таблице уже сильно отличается от собранной ANALYZE'ом в последний раз
  • «затык» по ресурсам
    и уже не хватает выделенных вычислительных мощностей CPU, постоянно прокачиваются гигабайты памяти или диск не успевает за всеми «хотелками» БД
  • блокировки от конкурирующих процессов

И если блокировки достаточно сложны в поимке и анализе, то для всего остального нам достаточно плана запроса, который можно получить с помощью оператора EXPLAIN (лучше, конечно, сразу EXPLAIN (ANALYZE, BUFFERS) ...) или модуля auto_explain.

Но, как сказано в той же документации,
«Понимание плана — это искусство, и чтобы овладеть им, нужен определённый опыт, …»
Но можно обойтись и без него, если воспользоваться подходящим инструментом!
Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Views 15K
Comments 77

Решение проблемы с переключением по alt+shift в Linux, в приложениях на Electron

Configuring Linux *
Sandbox
Здравствуйте, коллеги!

Хочу поделиться поделиться своим решением проблемы, которая указана в заголовке. Написанием статьи вдохновился от коллеги brnovk, который не поленился и предложил частичное (для меня) решение проблемы. Я сделал свой «костыль», который помог мне. Делюсь с вами.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Views 22K
Comments 58

Разработка IoT-шлюза на базе Raspberry CM3+

Development for Linux *Development for Raspberry Pi *Computer hardware IOT DIY
image
Рисунок 1 — Плата устройства

Большой опыт работы в сфере промышленной автоматизации и АСУТП, казалось бы, должен способствовать тому, что со временем уже много всего видел и много всего знаешь. Но не тут-то было. Оказывается, иногда могут возникать задачи и проекты, которые трудно реализовать стандартными средствами. Так под один крупный проект по мониторингу и управлению в «облаке» одного небезызвестного завода N требовалось найти подходящее железо. Однако оказалось, что в России по требованиям помехозащищенности устройства и открытости системы ничего подходящего не существует. Попытка заказать идеально подходящее нам устройство из-за рубежа провалилась, поскольку на территорию нашей страны оборудование с пометкой «IoT» весьма трудно ввести в промышленных масштабах. Другие же поставщики не устроили сроками доставки в 12 недель при небольших объемах и ценой. Поэтому в голове родилась и плотно осела мысль о создании своего устройства. Причем такого, чтобы оно было универсальным и подходило не только конкретно под этот один проект, а под множество других. В итоге от момента зарождения идеи, подбора поставщиков и корпуса, разработки платы, её отладки и тестирования, написания инструкций и технической документации прошло весьма много времени. Но зато теперь я держу с легким трепетом в руках полностью законченное и рабочее устройство, и могу заявлять, что мы это сделали!
Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Views 11K
Comments 53

Information

Rating
248-th
Location
Россия
Registered
Activity