Search
Write a publication
Pull to refresh
-1
0
Send message

Глубокое погружение в Linux namespaces, часть 3

Reading time9 min
Views17K

Часть 1
Часть 2
Часть 3
Часть 4


Mount namespaces изолируют ресурсы файловых систем. Это по большей части включает всё, что имеет отношение к файлам в системе. Среди охватываемых ресурсов есть файл, содержащий список точек монтирования, которые видны процессу, и, как мы намекали во вступительном посте, изолирование может обеспечить такое поведение, что изменение списка (или любого другого файла) в пределах некоторого mount namespace инстанса M не будет влиять на этот список в другом инстансе (так что только процессы в M увидят изменения)

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

На коленке: агрегация VPN, или Надежная связь на ненадежных каналах

Reading time8 min
Views22K

Представьте задачу: необходимо обеспечить стабильным интернетом и покрыть бесшовным Wi-Fi здание площадью 300 м2 с возможной расчетной нагрузкой до 100 человек. На первый взгляд, "вроде изян". Но стоит добавить пару деталей, и задача усложняется: здание стоит в лесопарковой зоне, где нет оптики, а бюджет ограничен.

Итого: потери и отвалы от базовой станции подкрадываются в самое неподходящее время. 

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

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

Читать далее

KODI: собираем удобный и функциональный медиацентр для дома. Часть 2

Reading time12 min
Views74K

Продолжение разговора о том, как при наличии небольшого количества времени и навыков построить мультимедийный комбайн с дополнительными возможностями домашнего сервера на базе Kubuntu 20.04 и KODI, способного работать 24/7/365.

В этой части поговорим о просмотре YouTube, внешнем управлении всеми элементами медиацентра, а также добавим возможность учета трафика с представлением анализа в веб-интерфейсе. Не забудем и о резервном копировании всего, что сделали, в том числе и об автоматическом резервном копировании на облачные файловые сервисы типа Яндекс.Диск/Google.Drive/Dropbox.

Первая часть публикации здесь:
KODI: собираем удобный и функциональный медиацентр для дома. Часть 1

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

Домашний DPI, или как бороться с провайдером его же методами

Reading time16 min
Views308K

Долгое время я терпел ограничения РосКомНадзора и соответствующие действия провайдеров по различным ограничениям доступа к сайтам - но с определённого момента устал, и начал думать как бы сделать так, чтобы было и удобно, и быстро, и при этом с минимумом заморочек после настройки... Хочу оговориться, что цель анонимизации не ставилась.

Вообще, эта проблема имеет несколько решений... Но я решил бороться с провайдером их же методом.

...При помощи NGINX!

Делаем вечную лампочку

Reading time3 min
Views303K
На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

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

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

Как использовать Websocket на примере простого Express API?

Reading time4 min
Views72K

Краткое описание технологии


Websocket — это протокол связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени.

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

Примечания

Несмотря на «похожесть» новых запросов и ответов на запросы и ответы протокола HTTP, они таковыми не являются. Например, в запросе есть тело, но в заголовках поле «Content-Length» отсутствует (что нарушает соглашения HTTP). Подробнее об этом можно прочитать в Википедии.

Одним из главных преимуществ технологии — это ее простота. На клиенте и сервере есть всего 4 события для обработки:

  1. connection
  2. error
  3. message
  4. close

Почему Websocket?


Кроме ws существуют еще два способа непрерывной передачи данных: Server-Sent Events (SSE) и Long Polling.

Приведем сравнения механизмов непрерывной связи сервера и клиента, а также сделаем выводы, почему стоит (или не стоит) использовать вебсокет.
Читать дальше →

Простой WebSocket-сервер на Node.JS

Reading time4 min
Views72K

Сейчас мы с вами напишем простой WebSocket-сервер на node.js. При подключении к этому серверу в ответ придёт приветственное сообщение. А так же будет доступна к выполнению пара не сложных команд.

Читать далее

Файрвол PF в ОС FreeBSD

Reading time5 min
Views25K

Введение



  1. Файрвол PF в ОС FreeBSD < — Вы здесь
  2. Фильтрация трафика PF
  3. FreeBSD. Трансляции, тэги и якоря в PF
  4. FreeBSD. Условная маршрутизация средствами PF
  5. FreeBSD. Путь сетевого пакета внутри ядра


В Рунете есть множество статей о настройке FreeBSD и PF, но все они разрозненны и несистематичны. А за любыми более-менее интересными вещами, такими, как маршрутизация средствами файрвола (Policy Based Routing), приходится читать оригинальную документацию, например, OpenBSD PF FAQ. Однако, есть отличия в синтаксисе команд для FreeBSD и OpenBSD. В этом цикле статей мы пробуем систематизировать и разобрать возможности PF от простого к сложному. Наверняка, эта вводная статья будет похожа на все остальные статьи о Packet Filter. Поэтому тем, кто уже знаком с базовыми возможностями, будет не интересно. Однако, без вступления не обойтись, а мясо будет в следующих статьях.

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

Никогда такого не было и вот опять. Почему нужно использовать self-hosted VPN. Релиз Amnezia

Reading time11 min
Views194K

Вот и пришло время для релиза VPN-клиента, родившегося благодаря хакатону DemHack, и выращенного при поддержке РосКомСвободы, PrivacyAccelerator и Теплицы социальных технологий.


Спустя полгода с того момента, как идея была впервые озвучена, мы презентуем готовый продукт — бесплатный опенсорсный клиент для self-hosted VPN, с помощью которого вы сможете установить VPN на свой сервер в несколько кликов.


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


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

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

Reading time15 min
Views707K

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

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

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

Читать далее

Как написать игру на C++

Reading time20 min
Views144K

С минимальным знанием языка.

С полной свободой самовыражения.

Без готовых движков и "накликивания" сцен.

Для Windows.

Без работы с сетью.

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

Почему так?

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

Под катом удалось написать об обработке действий игрока в реальном времени, запуске периодических событий по таймеру, использовании "современного" генератора случайных чисел, об изменение размера экрана консоли, об ускорении вывода текста в консоль.

Заинтригованы?

SQLite с использованием Go и Python

Reading time8 min
Views20K

В основном я предпочитаю использовать реляционные базы данных (SQL), поскольку они предоставляют несколько возможностей, которые весьма полезны при работе с данными. SQLite - отличный выбор, так как база данных там представляет собой единый файл, что упрощает обмен данными. Несмотря на то, что это единый файл, SQLite может обрабатывать до 281 терабайта данных. SQLite также поставляется с клиентом командной строки sqlite3, который отлично подходит для быстрого прототипирования.

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

Читать далее

Парсер командной строки на .NET5

Reading time4 min
Views11K

Сегодня мы собираемся показать вам, как начать парсинг аргументов командной строки. Кстати, это один пост из серии статей о .NET 5. У нас есть еще много интересного.

Приложения командной строки, также известные как консольные приложения, - это программы, созданные для использования из оболочки, например cmd или bash. Они существуют с 1960-х годов, задолго до появления Windows, MacOS или любого другого графического пользовательского интерфейса (GUI).

Обычно, когда вы начинаете изучать язык программирования, самый простой и распространенный стартовый пример -- это приложение Hello world. Подобные примеры в основном выводят на консоль только текст «Hello world», используя свои встроенные API. Компьютерное ПО может делать много разных вещей. Иногда у вас будет ввод, который каким-то образом преобразуется в вывод. В нашем примере «Hello world» нет никакого ввода.

Читать далее

Как выучить иностранный язык: алгоритм

Reading time13 min
Views168K

Если вы хоть немного пересекались с Machine Learning, то понимаете, что человеческий мозг — это, по сути, большая нейросеть. А раз так, то и работу с ним можно строить по известным в ML алгоритмам. Так я нашел универсальный способ выучить любой иностранный язык до нормального уровня в разумные сроки. И на себе проверил его эффективность.

Читать далее

Основы Bash-скриптинга для непрограммистов. Часть 3

Reading time8 min
Views12K

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

Читать далее

Локализация своих скриптов на BASH, часть 2

Reading time10 min
Views4K

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

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

Читать далее

Go, локдаун и новый MPD-клиент — встречайте Ymuse

Reading time4 min
Views9.4K

Уже лет десять моим основным медиаплеером на компьютере является MPD, Music Player Daemon — фоновый сервис, воспроизводящий музыку.


Чтобы с этим сервисом как-то взаимодействовать, нужна программа-клиент. Таких программ существует не один десяток, но до недавнего времени я никак не мог найти ту, которая меня бы полностью устраивала — поэтому в один прекрасный день я решил написать свою (тут и локдаун кстати подвернулся).


Предлагаю вашему вниманию краткий обзор (сравнительно) нового MPD-клиента для Linux/GTK под названием Ymuse, версию 0.16 которого я недавно выпустил.

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

Как удалить «неудаляемые» приложения со смартфона

Reading time5 min
Views277K


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

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →

Сокеты в ОС Linux

Reading time5 min
Views101K

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

Читать далее

Как я SCADA-систему на Linux переводил

Reading time3 min
Views6.6K

В этой статье я бы хотел рассказать о том, что Windows проекты на Delphi возможно перевести на Linux в разумные сроки и с разумными трудозатратами. Что такое SCADA-система, рассказывать не буду, а перейду сразу к делу.

Runtime ядро SCADA работает под Windows в качестве сервиса. Функции стандартные «как у всех»: сбор, обработка, архивирование данных, передача данных в другие SCADA-системы по стандартным протоколам обмена. Визуализация только через Web. Runtime ядро SCADA написано на Delphi. Решено было адаптировать исходный код под  FreePascal/Lazarus, так чтобы код под Windows компилировался и в FreePascal и в Delphi, вторым этапом было допиливание проекта непосредственно на Linux машине и переделка его в демон. В FreePascal привлекала возможность компиляции как для x64, так и для плат Raspberry pi (архитектуры ARMv7, ARM64 (aarch64)).

Конфигуратор работает под Windows в виде графического приложения. Пока решено не переводить его на Linux, в крайнем случае можно запустить под Wine.

Теперь перейдем к Runtime и будем говорить о нём. В нём применяются разнообразные компоненты:

Читать далее

Information

Rating
Does not participate
Registered
Activity