Search
Write a publication
Pull to refresh
4
0.2
Сергей @Semy

User

Send message

Зачем TWS-наушникам ограничение AAC в 128 кбит/с?

Reading time8 min
Views27K

Купили новые недешевые Bluetooth-наушники, а они звучат странно?

Разбираемся в причинах плохого звука с кодеком AAC и выясняем мотивацию установки ограничений битрейта со стороны производителей.

Читать далее

Пишем стек TCP/IP с нуля: Ethernet, ARP, IPv4 и ICMPv4

Level of difficultyEasy
Reading time13 min
Views25K

Написание собственного стека TCP/IP поначалу может показаться пугающей задачей. И в самом деле, за свой тридцатилетний срок жизни TCP впитал в себя множество спецификаций. Однако базовая спецификация остаётся относительно компактной1 — из важных частей в ней можно выделить парсинг заголовков TCP, машину состояний, отслеживание перегрузок и вычисление таймаута повторной передачи.

Самые распространённые протоколы слоя 2 и слоя 3, Ethernet и IP, скромны по сравнению с сложностью TCP. В этой серии статей мы реализуем минимальный стек TCP/IP пользовательского пространства для Linux.

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

Читать далее

Криптография на Python: шифрование информации и создание электронных цифровых подписей с помощью пакета PyCrypto

Reading time6 min
Views90K


Долго мучился с PyCrypto, в итоге получилась эта статья и полная реализация следующего протокола:

Этап отправки:

1. Алиса подписывает сообщение своей цифровой подписью и шифрует ее открытым ключом Боба (асимметричным алгоритмом).
2. Алиса генерирует случайный сеансовый ключ и шифрует этим ключом сообщение (с помощью симметричного алгоритма).
3. Сеансовый ключ шифруется открытым ключом Боба (асимметричным алгоритмом).
Алиса посылает Бобу зашифрованное сообщение, подпись и зашифрованный сеансовый ключ.

Этап приёма:

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

Как изменить цвет текста в терминале Linux

Reading time10 min
Views61K
Небольшое руководство и простой bash скрипт, чтобы сделать вывод вашего кода немного более ярким и красочным

Обычно вывод текста в терминале пользователя выглядит слишком монохромно. Однако добавить больше красок — совсем несложно. В данном скрипте я предлагаю вспомогательные методы для вывода текста, использования заданных цветов и работы с окнами терминала в тёмном и светлом режимах.

⬇️ Скачать color.zip — 2.7 KB (прим. редактора — потребуется регистрация на сайте)
Читать дальше →

6 приложений для анализа жесткого диска в Linux

Reading time2 min
Views107K
imageВы недавно купили винт на терабайт, но при попытке установить новую программу появляется сообщение «Your disk is full». Знакомая ситуация?
При покупке жесткого диска, я обычно стараюсь взять самый большой, чтобы было где разместить всю коллекцию видео и музыки, а также была возможность устанавливать и тестировать любое ПО. Однако, я заметил, что независимо от того, насколько велик жесткий диск, свободное место на нем быстро заканчивается.Если у вас та же проблема, значит пришло время проанализировать загрузку жесткого диска, и удалить все лишнее.
Далее по тексту, несколько способов сделать это в Linux.
Читать дальше →

Решаем проблему «деградации» YouTube с помощью NoDPI

Level of difficultyEasy
Reading time5 min
Views106K

Салют, Хабр! Я думаю, каждый из вас знаком или, по крайней мере, слышал о такой прекрасной утилите как GoodbyeDPI (большое спасибо @ValdikSS!). Сегодня я хочу представить вам (почти) свою разработку - аналог GoodbyeDPI.

Около полугода назад в своей статье Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Часть 1 (заблокирована по требованию РКН) я рассказывал о том, как скачивать видео с YouTube на Python, а так как YouTube у нас "деградировал", я поделился инструментом, с помощью которого можно исправить этот вопиющий недостаток. Инструмент тогда выглядел достаточно сыро, и несмотря на то, что он выполнял свою задачу, требовал серьезных улучшений. Увидев интерес общественности, я решил допилить его, и вот, спустя полгода, после немалой работы, я рад представить вам NoDPI - проект, который явно не понравится РКН (и он опять меня заблокирует).

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

Читать далее

Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Часть 1

Level of difficultyEasy
Reading time13 min
Views171K

Современный мир пресыщен различной информацией, и в наше непростое время её важно уметь не только находить и сохранять. Многие наверняка заметили, что в на YouTube, кроме мусора, котиков и прочих бесполезных вещей (которые мы иногда не прочь посмотреть) есть масса полезного материала по самым различным темам. И иногда этот материал неплохо было бы сохранить себе на будущее, чтобы не зависеть от переменчивых настроений в мире.

В этой статье я хочу рассказать, как можно скачивать видео, аудио (1 часть статьи), плейлисты и целые каналы с YouTube (2 часть статьи) без использования VPN и на чистом Python-е. Сразу оговорка: VPN нам не понадобится, но мы сделаем собственное средство, которое будет решать "проблему с устаревшим и изношенным оборудованием Google Global Cache" (вы поняли, о чём я). Я думаю это средство будет особенно актуально сегодня, когда у многих россиян YouTube почти или совсем не работает.

Читать далее

Восстановление открытых файлов но удаленных c файловой системы linux

Reading time2 min
Views34K
Всех с прошедшим новым годом!
В этой заметке я бы хотел поделиться как можно восстановить открытый файл в linux.

Предыстория


Зашел человек на канал посвященный debian в jabber и сказал что взломали его jabber-bot и выполнили команду:
$ rm -rf /*

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

ChatGPT без VPN за 10 минут (и установка нативного приложения)

Level of difficultyEasy
Reading time4 min
Views176K

Уверен, многие читатели Хабра знакомы с этим способом, ведь он существует не первый день. Чтобы сэкономить ваше время, я скажу всего два слова: comss DNS.

Все остальные - велком под кат :-)

Читать далее

Что такое Lua: почему стоит его попробовать и как встроить в программу на Go

Level of difficultyEasy
Reading time3 min
Views8.5K

Lua — это лёгкий, быстрый и гибкий скриптовый язык, который появился в 1993 году. Он написан на C и чаще всего используется не как самостоятельный язык, а как встраиваемый инструмент для других приложений.

Если вы играли в World of Warcraft и устанавливали аддоны, вы уже сталкивались с Lua. Redis исполняет Lua-скрипты внутри себя. Lua используется в Nginx через модуль ngx_http_lua_module, который позволяет писать обработчики HTTP-запросов. В NeoVim плагины тоже можно писать на Lua. Короче говоря — язык не из популярных топов, но крайне полезен и встраиваем во многие инфраструктурные решения.

Я опишу главные особенности языка и приведу небольшой пример использования из Go.

Читать далее

Разработка DHCP-сервера на Python

Level of difficultyEasy
Reading time14 min
Views6.6K

Привет, Хабр!

Сегодня мы рассмотрим, как создать собственный DHCP‑сервер на Python. Суть сервера проста — он динамически раздаёт IP‑адреса устройствам в сети, избавляя нас от головной боли статической конфигурации.

Суть сервера будет заключаться в том, чтобы «подставлять» IP‑адреса устройствам, заходящим в сеть. Сервер будет ловить DHCP‑запросы от клиентов, выбирать свободный IP из заранее подготовленного пула и подтверждать выдачу.

Читать далее

14 интересных фич Python (возможно, не совсем pythonic)

Level of difficultyMedium
Reading time21 min
Views23K

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

Если загуглить лучшие 10 продвинутых хитростей Python, то вы найдёте кучу постов или статей на LinkedIn с обзором тривиальных (но всё же полезных) вещей типа генераторов или кортежей.

Я пишу на Python уже двенадцать лет, и за это время нашёл кучу очень интересных, недооценённых, уникальных или (как может кто-то сказать) «не-pythonic» хитростей, позволяющих по-настоящему расширить границы возможного для Python.

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

Звезда Пшибыльского: что в ней происходит?

Reading time10 min
Views6.3K

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

Один из таких комментариев оставил уважаемый @3epka к статье о поисках «острова стабильности» в глубинах таблицы Менделеева, высказавшись об астероиде Полигимния. А буквально вчера вечером я обнаружил ещё более резкий комментарий уважаемого @Panzerschrek с закономерным вопросом о том, существуют ли какие-либо естественные процессы, приводящие к возникновению элементов из Острова Стабильности. Я тоже задумывался о такой проблеме. Наука, растущая из сократовской майевтики и аристотелевского научного метода, основывается не только на опыте и наблюдении, но и на тщательном сравнении образцов с эталоном. Если же образец не вписывается в выборку, либо эталон нельзя смоделировать в лаборатории, то наука начинает пробуксовывать, чем то и дело не преминут воспользоваться уфологи, астрологи и креационисты.

Читать далее

Что такое Ansible и как применяется в DWH-проектах? Сравнение Ansible с Puppet, Chef, SaltStack

Reading time11 min
Views6.6K

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

Сравниваем Ansible с другими инструментами для автоматизации управления инфраструктурой: Puppet, Chef, SaltStack.

Читать далее

go:linkname в Go

Level of difficultyEasy
Reading time4 min
Views2.6K

Привет, Хабр!

В этой статье рассмотрим //go:linkname — неофициальной, но невероятно мощной фиче Go, которая позволяет вызывать приватные функции и обращаться к закрытым переменным других пакетов.

Читать далее

Оптимизация Go map{-}{-}

Level of difficultyMedium
Reading time3 min
Views2.5K

Хеш-таблица(мапа) — одна из самых популярных структур данных, потому что поиск по ключу происходит за O(1). Причем ключ может быть любым любым типом, элементы которого можно сравнивать (Comparable Trait).

Я столкнулся с тем, что мапа не такая быстрая по бенчмаркам на языке GO, хотя теоретическая сложность алгоритма О(1).

Давайте рассмотрим следующую задачу и способы ее решения.

Читать далее

Состав TLS-сертификата на примере «шестидневного» варианта от Let's Encrypt

Level of difficultyMedium
Reading time10 min
Views2.8K

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

Читать далее

Bash-скрипты, часть 6: функции и разработка библиотек

Reading time9 min
Views290K
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Занимаясь разработкой bash-скриптов, вы рано или поздно столкнётесь с тем, что вам периодически приходится использовать одни и те же фрагменты кода. Постоянно набирать их вручную скучно, а копирование и вставка — не наш метод. Как быть? Хорошо бы найти средство, которое позволяет один раз написать блок кода и, когда он понадобится снова, просто сослаться на него в скрипте.



Оболочка bash предоставляет такую возможность, позволяя создавать функции. Функции bash — это именованные блоки кода, которые можно повторно использовать в скриптах.
Читать дальше →

Используем Xray как VPN

Level of difficultyEasy
Reading time5 min
Views68K

Так как я любитель selfhosted, у меня есть домашняя инфраструктура:

Orange Pi - медиасервер;

Synology - файлопомойка;

Neptune 4 - 3д принтер с веб интерфейсом и видео с камеры. И хотелось бы иметь безопасный доступ к ней снаружи через телефон и ПК, но при этом иметь выход в интернет не в РФ. Раньше для этих нужд я использовал OpenVPN, но теперь на него полагаться не стоит. Поэтому я начал изучать документацию к отличному инструменты от китайских товарищей - Xray!

Что понадобится:

Сервер с внешним IP с инфраструктурой. У меня - Orange Pi, далее - Bridge

Сервер, к которому хотим получить доступ - Server

Сервер вне РФ для выхода в интернет. Далее - Proxy

Клиент на ваш вкус. Далее - Client

Клиент и сервер на Linux - Xray-core, который можно поставить через оффициальный скрипт установки Xray

Клиент на андроид - v2rayNG

Еще клиенты можно найти в репозитории Xray-core

За базу берем файл конфигурации VLESS-TCP-XTLS-Vision-REALITY и начинаем читать документацию к Xray

Маршрутизация происходит на клиенте. Если клиент обращается к домену xray.com, например, то направляем траффик в Bridge, а для всех остальных соединений - в Proxy. Затем Bridge направляет траффик к Server, если клиент обращался к server.xray.com.
Выглядит так:

Читать далее

Information

Rating
4,691-st
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity