Как стать автором
Обновить
142
0
Дмитрий Щербаков @Vorb

IT Infrastructure architect

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

Термошкаф с «начинкой» — собрать самому или приобрести в готовом виде?

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

Суть вопроса – есть некий термошкаф (или просто шкаф без обогрева), в котором надо разместить конкретное оборудование в соответствии с задачей всего данного комплекса.

Какие-то сигналы по каким-то кабелям должны в этот шкаф прийти и, пройдя через установленное в шкафу оборудование, претерпев необходимые преобразования, выйти по другим кабелям в определённом виде.

Весь перечень необходимого оборудования известен, схема межблочного монтажа тоже. Как разумнее поступить? 

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

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

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

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии10

BPF для самых маленьких, часть вторая: разнообразие типов программ BPF

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

Продолжаем серию статей про BPF — универсальную виртуальную машину ядра Linux — и в этом выпуске расскажем о том, какие типы программ BPF существуют, и как они используются в реальном мире капиталистического чистогана. Кроме этого, в конце статьи приведено некоторое количество ссылок, в частности, на две с половиной существующие книжки про BPF.


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


Если вы хотите узнать, как именно BPF помогает эффективно решать задачи защиты от DDoS атак, распределения нагрузки на серверы, реализации сетевого стека kubernetes, защиты систем от нападения, эффективной трассировки систем 24x7 прямо в проде и многие другие, то добро пожаловать под кат.


image

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

Операционные системы с нуля; Уровень 0

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

Добрый день/вечер/ночь/утро! Есть один экспериментальный курс по операционным системам. Есть он в Стэнфордском университете. Но часть материалов доступно всем желающим. Помимо слайдов доступны полные описания практических занятий.


Чем этот курс отличается от прочих других? Большая часть кода пишется самостоятельно и выполняется на вполне реальном современном железе. В качестве целевой платформы выбран Raspberry Pi 3 model B. Т.е. достаточно актуальная архитектура AArch64. ARMv8 Cortex-A53, четыре ядра, 64-бита и вот это всё. В качестве основного языка программирования выбран Rust. Который безопасный, быстрый, без GC и так далее. Его, Rust, предполагается изучать во время курса.


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

Читать дальше →
Всего голосов 80: ↑78 и ↓2+76
Комментарии55

Типы struct, union и enum в Modern C++

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

Язык C++ сильно изменился за последние 10 лет. Изменились даже базовые типы: struct, union и enum. Сегодня мы кратко пройдёмся по всем изменениям от C++11 до C++17, заглянем в C++20 и в конце составим список правил хорошего стиля.

Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии63

Обработка ошибок в C

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


Введение


Ошибки, увы, неизбежны, поэтому их обработка занимает очень важное место в программировании. И если алгоритмические ошибки можно выявить и исправить во время написания и тестирования программы, то ошибок времени выполнения избежать нельзя в принципе. Сегодня мы рассмотрим функции стандартной библиотеки (C Standard Library) и POSIX, используемые в обработке ошибок.
Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии41

Мониторинг системных вызовов Linux

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


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


  1. Сколько уникальных исходящих TCP-соединений установили ваши серверы за последний час?
  2. Какие процессы и пользователи инициировали установку этих соединений?

Если вы в состоянии ответить на оба вопроса, отлично — дальше можете не читать. А если ответа нет, то получить эту информацию поможет go-audit.

Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии5

htop и многое другое на пальцах

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


На протяжении долгого времени я не до конца понимал htop. Я думал, что средняя загрузка [load average] в 1.0 означает, что процессор загружен на 50%, но это не совсем так. Да и потом, почему именно 1.0?

Затем я решил во всём разобраться и написать об этом. Говорят, что лучший способ научиться новому — попытаться это объяснить.
Читать дальше →
Всего голосов 138: ↑130 и ↓8+122
Комментарии43

Grep все, что можно

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

Про grep знают если не все, то многие читатели Хабра, однако его многочисленных родственников знают немногие.




Давайте узнаем, как можно грепать все, что таит в себе хоть крупицу текста.

Читать дальше →
Всего голосов 93: ↑91 и ↓2+89
Комментарии48

Создание и тестирование Firewall в Linux, Часть 1.2. Простой перехват трафика с Netfilter

Время на прочтение8 мин
Количество просмотров24K
Содержание первой части:

1.1 — Создание виртуальной лаборатории (чтобы нам было где работать, я покажу как создать виртуальную сеть на вашем компьютере. Сеть будет состоять из 3х машин Linux ubuntu).
1.2 – Написание простого модуля в Linux. Введение в Netfilter и перехват трафика с его помощью. Объединяем все вместе, тестируем.
1.3Написание простого char device. Добавление виртуальной файловой системы — sysfs. Написание user interface. Объединяем все вместе, тестируем.

Содержание второй части:
Скрытый текст
2.1 — Введение во вторую часть. Смотрим на сеть и протоколы. Wireshark.
2.2 — Таблицы Firewall. Transport Layer. Структуры TCP, UDP. Расширяем Firewall.
2.3 — Расширяем функциональность. Обарабатываем данные в user space. libnetfilter_queue.
2.4 — (*Опиционально) Изучаем реальную Buffer Overflow атаку и предотвращаем с помощью нашего Firewall'а.

Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии8

Масштабируемая конфигурация nginx

Время на прочтение12 мин
Количество просмотров34K
Игорь Сысоев

Игорь Сысоев ( isysoev )


Меня зовут Игорь Сысоев, я автор nginx и сооснователь одноименной компании.

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

Я буду говорить о масштабируемой конфигурации nginx, но это не о том, как обслужить с помощью nginx сотни тысяч одновременных соединений, потому что nginx для этого настраивать не надо. Нужно выставить адекватное число рабочих процессов или поставить его в режим «авто», поставить worker_connections в 100 000 соединений, после этого заниматься настройкой ядра — это гораздо более глобальная задача, чем просто настройка nginx. Поэтому я буду рассказывать о другой масштабируемости — о масштабируемости конфигурации nginx, т.е. о том, как обеспечить рост конфигурации от сотни строчек до нескольких тысяч и при этом тратить минимальное (желательно константное) время на сопровождение этой конфигурации.
Всего голосов 59: ↑57 и ↓2+55
Комментарии31

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

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


В этой статье мы поговорим об ошибках, совершаемых программистами на Bash. Во всех приведённых примерах есть какие-то изъяны. Вам удастся избежать многих из нижеописанных ошибок, если вы всегда будете использовать кавычки и никогда не будете использовать разбиение на слова (wordsplitting)! Разбиение на слова — это ущербная легаси-практика, унаследованная из оболочки Bourne. Она применяется по умолчанию, если вы не заключаете подстановки (expansions) в кавычки. В общем, подавляющее большинство подводных камней так или иначе связаны с подстановкой без кавычек, что приводит к разбиению на слова и глоббингу (globbing) получившегося результата.


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

Трассировщик ввода-вывода в ядре Linux

Время на прочтение5 мин
Количество просмотров14K
Мало кто знает, что в ядре Linux есть необычные и весьма полезные инструменты для отладки и тестирования. В этой небольшой статье я хочу поделиться описанием трассировщика ввода-вывода.
Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии4

Мониторинг под рукой на IxoraRMS. Быстро и со вкусом

Время на прочтение16 мин
Количество просмотров8.4K
image
Иногда проблема с приложением выливается в небольшой кошмар, ребус. Назовите, как хотите. Хочу поделиться об опыте использования средств мониторинга разработчиками на одном из проектов. Хабр многолик и уже существуют десятки статей о продуктах, которые облегчают понимание происходящего: cacti — habrahabr.ru/post/179391; zabbix — habrahabr.ru/post/137641; collectd — habrahabr.ru/post/93205; штатные средства JVM — habrahabr.ru/post/147008 (дополняйте).

Попробую рассказать о еще одном небольшом универсальном и легковесном продукте в этой категории — IxoraRMS.
Всем интересующимся, добро пожаловать под кат.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

Модификация системного вызова. Часть 2

Время на прочтение6 мин
Количество просмотров16K
В предыдущей части мы договорились до того, что не экспортируемые имена ядра Linux могут использоваться в коде собственных модулей ядра с тем же успехом, что и экспортируемые. Одним из таких имён в ядре является селекторная таблица всех системных вызовов Linux. Собственно, это и есть основной интерфейс любых приложений к сервисам ядра. Теперь мы рассмотрим как можно модифицировать оригинальный обработчик любого системного вызова, подменить его, или внести разнообразие в его выполнение в соответствии с собственным видением.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии32

Бесплатный видеокурс CCNA Сisco доступен на одном из каналов YouTube

Время на прочтение2 мин
Количество просмотров107K
По моему глубокому убеждению, в особенности в сфере IT, важнейшим качеством любого из специалистов является способность к самообучению. Именно потому в нашей небольшой компании стало хорошей традицией уделять ежедневно время этому процессу, собственному развитию. Даже менеджер должен понимать, как устроена и функционирует сеть. Не давнее, как вчера, обсуждая проблему с BGP, коллега сказал «Вот не был бы я лентяем — прошел бы в студенческие годы курс CCNA и знал бы ответ на твой вопрос». И я задался задачей помочь коллеге, найти способ получить знания в этой области самому, хотя бы начального уровня, чтоб лучше понимать с чем мы работаем. На Хабре, введя в поиск CCNA, можно встретить массу рекомендаций, но все же, англоязычный Интернет — основной источник знаний в области IT-коммуникаций.



Я просто обожаю YouTube! Ведь он предоставляет волшебную возможность удаленного «посещения» тематических конференций и семинаров, причем абсолютно бесплатно. В этот раз, как оказалось, там уже месяца 2 существует бесплатный канал, на котором лектор Imran Rafai, четко и доступно излагает материал из 30-дневного CCNA-курса, весьма доступно и увлекательно!

Даже если Вы не системный администратор, а просто хотите обладать немного лучшим пониманием, что такое Интернет — курс для Вас! Помимо прочего Вы повысите свой уровень английского, ведь курс на английском языке, с субтитрами.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии11

Настраиваем сервер с Chef (Быстро и просто)

Время на прочтение3 мин
Количество просмотров14K
The best way to learn Chef is to use Chef
— getchef.com



Chef — это инструмент для конфигурирования серверов в концепции Infrastructure as a Code(IaaC).
Лично для меня, Chef — это, в первую очередь, возможность хранить архитектуру сервиса в виде ролей, и модифицировать её, избегая рутинных действий по установке пакетов и конфигурации.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии12

Как использовать список ядра Linux для создания очереди

Время на прочтение4 мин
Количество просмотров11K
Приветствую!

В данной статье рассматривается использование реализации двусвязного списка ядра Linux.

Двусвязный список в ядре Linux реализован в файле include/linux/list.h. Мы будем использовать адаптированный вариант list.h [1], который отличается от оригинального возможностью использовать его в userspace. Например, создадим очередь — структуру данных с доступом к элементам по принципу «первый пришёл — первый вышел» для произвольного типа данных на основе list.h.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии7

Организация многозадачности в ядре ОС

Время на прочтение22 мин
Количество просмотров77K
Волею судеб мне довелось разбираться с организацией многозадачности, точнее псевдо-многозадачности, поскольку задачи делят время на одном ядре процессора. Я уже несколько раз встречала на хабре статьи по данной теме, и мне показалось, что данная тема сообществу интересна, поэтому я позволю себе внести свою скромную лепту в освещение данного вопроса.
Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
Ну, и многопоточные котики для привлечения внимания.

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

Многозадачность в ядре Linux: workqueue

Время на прочтение7 мин
Количество просмотров35K
Продолжаем тему многопоточности в ядре Linux. В прошлый раз я рассказывала про прерывания, их обработку и tasklet’ы, и так как изначально предполагалось, что это будет одна статья, в своем рассказе о workqueue я буду ссылаться на tasklet’ы, считая, что читатель уже с ними знаком.
Как и в прошлый раз, я постараюсь сделать мой рассказ максимально подробным и детальным.

Статьи цикла:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность


Читать дальше →
Всего голосов 68: ↑68 и ↓0+68
Комментарии4

Raspberry Pi — HD медиаплеер, HDTV плеер

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

Здравствуйте, хочу поделиться небольшим практическим исследованием возможности применения Raspberry Pi model B 512mb в качестве медиаплеера и IPTV плеера HD контента. Также небольшие рассуждения о подобном идеальном устройстве.

Поиск не давал конкретных ответов, имелись разнящиеся данные, говорящие скорее о сырости и ГИКоватости подобного применения одноплатного компьютера.

Прошу подкат за подробностями…
Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии40
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
New York, New York, США
Дата рождения
Зарегистрирован
Активность