Как стать автором
Обновить
-9
0
Vasiliy Tolstov @vtolstov

DevOps

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

Тормозящая виртуализация на x86. Небольшая попытка разобраться Часть 4. KVM

Уровень сложностиСложный
Время на прочтение4 мин
Количество просмотров8.3K

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

Часть 4. Что из этого следует, и как устроен планировщик в KVM или KVM- QEMU. Тут тоже не будет ничего нового, но будет масса ошибок.

Читать далее
Всего голосов 35: ↑26 и ↓9+17
Комментарии13

Как установить NCALayer на Linux

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров7.9K

Всем привет, меня зовут Абай.

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

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии11

В Go 1.21 существенно расширяется стандартная библиотека

Время на прочтение4 мин
Количество просмотров14K
// теперь в Go так можно!
slices.Contains(s, v)

Год назад в блоге Каруны мы писали про дженерики в Go, и там упоминалось, что гошное сообщество разделилось на две части. Не всем это нововведение было нужно, особенно в простом продуктовом коде. И надо сказать, это до сих пор так, дженерики по-прежнему используют далеко не все проекты.


Однако для стандартной библиотеки Go это было по-настоящему царским подарком. Появились новые стандартные обобщенные функции, и, отстоявшись в экспериментальном репозитории golang.org/x/exp, теперь появятся в Go 1.21. Релиз буквально через месяц.


TLDR: появилось множество функций по работе со слайсами, мапами, а также новый логгер с (почти) всеми нужными фишечками.


Лично для меня знаковым событием стало появление возможности поиска элемента в слайсе и получение ключей мапы, потому что ну давно пора, 10 лет языку.


Но давайте обо всём по порядку.

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

Российские VPS/VDS-хостинги — рейтинг 2023. Злая версия

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров52K

Привет Хабр! Снова я и сегодня снова будет разговор о хостингах. За время своих скитаний я пришёл к выводу, что сравнивать их между собой довольно бесполезно, поэтому в этот раз решил сравнивать с реальными железками.

Читать далее
Всего голосов 153: ↑145 и ↓8+137
Комментарии97

Apple HomeKit

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

В данной статье речь пойдет про Apple HomeKit Accessory Protocol (HAP): внутренности и разработку контроллера.

Apple HomeKit создан для взаимодействия контроллера (по умолчанию iOS-устройства, приложение Home) и множества устройств(аксессуаров). Протокол открыт для некоммерческого использования, загрузить его можно с сайта Apple. На основе этой версии протокола создано несколько open-source проектов, и когда говорят про HomeKit на каком-нибуль Raspberry Pi обычно подразумевают установку homebridge и плагинов для создания совместимых аксессуаров.

Обратная же задача - создание контроллера - не такая распространенная и из проектов мне удалось найти лишь pypi.org/project/homekit/.

Поставим задачу создать контроллер, например, для управления аксессуарами с Android-телефона и попробуем ее решить. Для простоты будем работать только с IP-сетями, без Bluetooth.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

Когда TCP быстрее UDP

Время на прочтение6 мин
Количество просмотров48K
Я знаю отличную шутку про UDP, но не факт, что она до вас дойдёт.

Все, кто хоть раз в жизни, по работе открывал файл /etc/services знают, что одни сетевые службы используют транспортный протокол TCP, другие же — UDP. Каждый из них имеет свою область применения. Если надёжность соединения имеет приоритет над скоростью передачи данных, то TCP предпочтительнее. Например, для SMTP, или IMAP больше подходит TCP. Обратное тоже верно там, где важна скорость передачи данных, а потеря дейтаграмм или их порядок не критичны — используют UDP. К их числу относятся SNMP, DNS, VoIP и другие службы.
Читать дальше →
Всего голосов 82: ↑81 и ↓1+80
Комментарии16

Заворачиваем в Promise модальное окно подтверждения действия

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

Как правило, выводится модал «Вы уверены, что хотите сделать то то и то то» и внизу две кнопки: Да и Нет. Если пользователь нажал «да», то отправляем запрос на сервер и закрываем модал. Если «нет», просто закрываем модал.

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

Перейдем от лирики к делу. Для отображения модала будем использовать Bootstrap.

Собственно мой вариант такого компонента:
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии5

Стоит ли хранить Google Fonts на своём сервере?

Время на прочтение22 мин
Количество просмотров23K
В последние несколько недель, по стечению обстоятельств на работе и в сторонних проектах, я узнал много о веб-шрифтах, а также много нового о Google Fonts в частности. Благодаря этому я могу дать более развернутый ответ на вопрос, который в прошлом мне казался простым: стоит ли вам хранить Google Fonts на своём сервере?

Говоря объективно, признаю, шрифты — не моя сильная сторона. Я предпочитаю более практичный подход и не зацикливаюсь на дизайне (посмотрите на этот сайт и убедитесь, что так и есть) и прежде не чувствовал необходимости в использовании нестандартных шрифтов. Конечно, они выглядят немного приятнее и «брендируют» текст. Но для основного текста толку в них мало. Я никогда не оценивал статью (или иначе относился к её содержанию), только потому что для её подачи использовался красивый шрифт. Тем не менее, мне было полностью понятно негативное влияние дополнительных шрифтов на производительность и скорость загрузки страницы, так что, возможно, из-за этого я предвзят.

Тем не менее, многие со мной могут не согласится, да и шрифты, важны они лично для меня или нет, регулярно используются многими другими разработчиками, и часто у них просто нет выбора. Давайте посмотрим, что можно сделать, чтобы и в скорости сайта не потерять, и дизайнеров довольными оставить.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии10

Партнерское соглашение или как не погубить бизнес на старте

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

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


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


В итоге бизнес под угрозой развала. А ведь всего бы этого можно было бы избежать, правильно договорившись на берегу. Как?

Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии28

ruleguard: динамические проверки для Go

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


В этой статье я расскажу о новой библиотеке (и утилите) статического анализа go-ruleguard, которая адаптирует gogrep для использования внутри линтеров.


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


В качестве бонуса, мы поговорим об go/analysis и его предшественниках.

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

Технология AMP в email-письмах: плюсы, минусы и возможные применения

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


Изображение: Unsplash

Одним из важных трендов 2019 года в email-маркетинге стало начало внедрения технологии AMP, которая ранее применялась для ускорения работы мобильных версий сайтов. Многие маркетологи и email-маркетологи были очень воодушевлены и с нетерпением ждали реализации поддержки AMP, поскольку новая технология обещала сделать email-письма интерактивными.

Но насколько эта технология реально применима сейчас, с какими сложностями придется столкнуться при ее внедрении и на какие результаты можно рассчитывать? Отвечаем на эти вопросы в статье.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Руководство для начинающих по SELinux

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


Перевод статьи подготовлен для студентов курса «Безопасность Linux»




SELinux или Security Enhanced Linux — это улучшенный механизм управления доступом, разработанный Агентством национальной безопасности США (АНБ США) для предотвращения злонамеренных вторжений. Он реализует принудительную (или мандатную) модель управления доступом (англ. Mandatory Access Control, MAC) поверх существующей дискреционной (или избирательной) модели (англ. Discretionary Access Control, DAC), то есть разрешений на чтение, запись, выполнение.

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

Простые методы оптимизации программ Go

Время на прочтение11 мин
Количество просмотров15K
Я всегда забочусь о производительности. Точно не знаю, почему. Но меня просто бесят медленные сервисы и программы. Похоже, я не одинок.

В тестах A/B мы попытались замедлять выдачу страниц с шагом 100 миллисекунд и обнаружили, что даже очень небольшие задержки приводят к существенному падению доходов. — Грег Линден, Amazon.com

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

  • Операции, которые хорошо выполняются в небольших масштабах, становятся нежизнеспособными с ростом числа пользователей. Обычно это операции O(N) или O(N²). Когда база пользователей мала, всё работает отлично. Продукт спешат вывести на рынок. По мере роста базы возникает всё больше неожиданных патологических ситуаций — и сервис останавливается.
  • Много отдельных источников неоптимальной работы, «смерть от тысячи порезов».
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии10

Принципы работы протокола BGP

Время на прочтение14 мин
Количество просмотров203K
Сегодня мы рассмотрим протокол BGP. Не будем долго говорить зачем он и почему он используется как единственный протокол. Довольно много информации есть на этот счет, например тут.

Итак, что такое BGP? BGP — это протокол динамической маршрутизации, являющийся единственным EGP( External Gateway Protocol) протоколом. Данный протокол используется для построения маршрутизации в интернете. Рассмотрим как строится соседство между двумя маршрутизаторами BGP.

My Image
Рассмотрим соседство между Router1 и Router3. Настроим их при помощи следующих команд:
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии8

Быстрое создания SELinux-модулей с помощью утилиты sepolicy

Время на прочтение5 мин
Количество просмотров7.8K
В пакет policycoreutils-devel входит python-утилита sepolicy, которая сильно облегчает написание модуля. В этой статье мы рассмотрим процесс создания модуля для nmap с помощью этой утилиты.


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

Хранение данных на Виниле

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


В 2016-м я выступил на Highload с докладом про Vinyl, движок для хранения данных на диске в Tarantool. С тех пор мы добавили много новых возможностей, но хранение данных на диске — такая объемная тема, что основы, о которых идет речь в этой статье, совсем не изменились.

Содержание (чтобы удобно было ориентироваться):

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

10-гигабитный Ethernet: советы новичку

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


Вдохновившись интернет-запросами в стиле «как сделать спиннер из картонки», я решил рассказать о том, что близко мне: как самому построить 10-гигабитную сеть. Гигабитный Ethernet вопросов уже не вызывает – справится даже школьник: потребуется коммутатор, медная витая пара и привычные RJ-45 разъемы.

А если хочется больше? Например, 10-гигабитное соединение для небольшого офиса или серверной. Какое оборудование понадобится и как его подключать – просто и по шагам в моей сегодняшней статье.
Читать дальше →
Всего голосов 65: ↑62 и ↓3+59
Комментарии95

Первая российская материнская плата массового сегмента

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

Но вот, в начале года мы получили образец серверной 2-процессорной материнской платы, разработанной и произведённой на территории России. Эта модель вызвала интерес в первую очередь из-за того, что по характеристикам и стоимости полностью подходила для массового применения. Обзору и тестированию первой российской материнской платы Rikor R-BD-E5R-V4-16.EA и посвящается эта статья.
Читать дальше →
Всего голосов 80: ↑67 и ↓13+54
Комментарии212

Я решил отключить Google AMP на своём сайте

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


Меня связывает с проектом Google’s Accelerated Mobile Pages (AMP) долгая история, но вчера чаша терпения переполнилась.

Я зашёл в Twitter (в Safari на iPhone 6) и заметил, что кто-то сослался на мой сайт, поставив ссылку AMP. Я ответил и указал настоящую ссылку, но когда нажал на неё, то меня перенаправило обратно на версию AMP моей страницы.
Всего голосов 35: ↑33 и ↓2+31
Комментарии27

Мониторинг и настройка сетевого стека Linux: получение данных

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


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

Также рекомендуем ознакомиться с иллюстрированным руководством на ту же тему, там есть поясняющие схемы и дополнительная информация.
Читать дальше →
Всего голосов 63: ↑60 и ↓3+57
Комментарии8
1

Информация

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