Как стать автором
Обновить
13
0
Анатолий Никифоров @cybran24

BSc Computer Engineering

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

Посчитайте сумму n-го ряда пирамиды нечетных чисел

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

Эта задача преследовала меня на двух интервью подряд, и я решил ее!

Читать далее
Всего голосов 11: ↑5 и ↓6+2
Комментарии17

Настройка Visual Studio Code для Django

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

Настройка Visual Studio Code для работы над проектами Django немного отличается от типичного сетапа для pure Python проектов. Например, в Django мало пользы от mypy, так как он не поддерживает типы Django. Точно также дела обстоят с линтерами, которые, без предварительной настройки, работают с кодом Django неправильно.

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

Клиент-серверный IPC на Python multiprocessing

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

Статья отражает личный опыт разработки CLI приложения для Linux.

В ней рассмотрен способ выполнения привилегированных системных вызовов процессом суперпользователя по запросам управляющей программы через строго описанный API.

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

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

JWT аутентификация в CLI приложении на Linux

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

Когда речь идёт о хранении sensitive data в браузере, достаточно воспользоваться одним из двух доступных вариантов: cookies или localStorage. Тут каждый выбирает по вкусу. Однако я посветил эту статью Secret Service – службе, которая работает через D-Bus и предназначена для хранения «секретов» в Linux.

У службы есть API, которым пользуется GNOME Keyring для хранения аутентификационных данных пользовательских приложений.

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

Динамическое определение класса в Python

Время на прочтение4 мин
Количество просмотров19K
Под динамическим определением объекта можно понимать определение во время исполнения. В отличие от статического определения, которое используется в привычном определении класса с помощью ключевого слова class, динамическое определение использует встроенный класс type.

Метакласс type


Класс type часто используется для получения типа объекта. Например так:

h = "hello"
type(h)
<class 'str'>

Но у него есть другое применение. Он может инициализировать новые типы.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+14
Комментарии16

Строим маршрутизатор в SOCKS на ноутбуке с Debian 10

Время на прочтение10 мин
Количество просмотров17K
Целый год (или два) я откладывал публикацию данной статьи по главной причине — мной уже были опубликованы две статьи, в которых я описал процесс создания маршрутизатора в SOCKS из самого обычного ноутбука с Debian.

Однако, с тех пор стабильная версия Debian обновилась до Buster, мне в личку обратилось достаточное количество людей с просьбой помочь в настройке, а значит, мои предыдущие статьи не являются исчерпывающими. Что ж, я и сам догадывался, что методы, изложеннные в них, не до конца раскрывают все тонкости настройки Linux для маршрутизации в SOСKS. К тому же они написаны для Debian Stretch, а после обновления до Buster, в системе инициализации systemd, я заметил небольшие изменения во взаимодействии служб. Да и в самих статьях я не использовал systemd-networkd, хотя она лучше всего подходит для сложных сетевых конфигураций.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии24

DNSCrypt 2.0 и блокировка рекламы

Время на прочтение2 мин
Количество просмотров50K
В этой статье хотелось бы рассмотреть нововведения Dnscrypt, на конкретном примере, который наверняка окажется для кого-то полезным.

Для тех, кто не знает, Dnscrypt — это уникальный протокол шифрования DNS-трафика. Он даёт возможность защитить DNS-коммуникации от перехватов и подмены, и к примеру, обойти блокировки реализуемые на уровне DNS-запросов.

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

В этой статье, воспользуемся этим преимуществом и для разнообразия/пользы ограничим доступ к рекламным доменам.
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии5

Маршрутизация в socks. Еще один способ

Время на прочтение4 мин
Количество просмотров15K
Рассмотрим еще один способ маршрутизации локальной сети через «socks-прокси». В отличии от предыдущего способа с «redsocks», в этом, будет рассмотрена возможность маршрутизации на сетевом уровне (сетевой модели OSI), по средствам пакета «badvpn-tun2socks». Данная статья ориентирована на создание и постоянное использование такого маршрутизатора на базе ОС «Debian stretch».

Советую другой способ с использованием systemd-networkd.

Прежде чем перейти к описанию настройки системы, предоставлю ссылку на исходники badvpn (может кому-то понадобится).

Итак, после скачивания и сборки пакета, предлагаю сразу создать сервис systemd со следующим содержанием:

cat /etc/systemd/system/tun2socks.service 
[Unit]
Description=Start tun2socks

[Service]
ExecStart=/путь/к/badvpn-tun2socks --tundev tun0 --netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:1080

[Install]
WantedBy=multi-user.target

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

Маршрутизация локальной сети через прозрачный socks-прокси

Время на прочтение4 мин
Количество просмотров32K
Потребовалось пустить трафик со всех домашних устройств, включая смартфоны, через ssh tunnel.

Советую другой способ с использованием tun2socks.

Имелось:

  • маршрутизатор TP-LINK, подключенный к провайдеру.
  • смартфоны и ноутбук подключенные к беспроводной точки доступа маршрутизатора.

Ноутбук находился далеко от маршрутизатора (в другой комнате) и регулярно использовался, поэтому пришлось искать решение маршрутизации трафика с помощью встроенного беспроводного интерфейса (и без всяких там eth0).
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии19

Информация

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