Pull to refresh
4
0.1
Сергей @Semy

User

Send message

Я устал возиться с кучей VPN и поставил Xray на роутер

Level of difficultyMedium
Reading time5 min
Views139K

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

Я долгое время жил в этом хаосе. Сначала я ставил VPN на телефон, потом на ноутбук, потом на телевизор... В какой-то момент их стало столько, что я уже не знал, какой включен, какой отключен, где подписка закончилась, а где опять надо искать новый сервер. Рабочий VPN переставал работать в самый неподходящий момент – например, когда я пытался оплатить что-то онлайн или посмотреть видео.

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

Читать далее

Отказоустойчивый кластер для балансировки нагрузки

Reading time8 min
Views62K

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

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

Как работают dict, slots и weakref в Python (и зачем это знать)

Level of difficultyEasy
Reading time6 min
Views9.2K

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

Сегодня рассмотрим как slots, dict и weakref помогают нам выжимать максимум из Python: экономить память, ускорять доступ к атрибутам и бороться с утечками.

Читать далее

Компактные структуры данных

Level of difficultyMedium
Reading time10 min
Views14K

Введение


Несколько месяцев назад в поисках идей по ускорению кода я изучал множество научных статей по computer science. Не буду притворяться, что хорошо их понимал, но меня не пугает непонятное, и я готов признать своё невежество1. Я обнаружил статью, написанную пятнадцать лет назад2, в которой было множество новых для меня концепций. Мне никак не удавалось в них разобраться.

Что же делать дальше? Можно искать другие статьи, чтобы они заполнили мои пробелы. Это рискованное предприятие, потому что они могут запутать ещё больше, но избежать этого нельзя. Я нашёл статью с нужной структурой данных, в которой упоминался исходный код с веб-сайта. Код был написан на C++, а я работаю на Rust, но решил, что всё равно стоит на него взглянуть. Однако зайдя на сайт, я не обнаружил там ресурс, поэтому я написал владельцу веб-сайта, который оказался преподавателем computer science.

Этот преподаватель (Гонсало Наварро) очень тепло меня принял и сразу же ответил мне3 4. И только в процессе общения с ним я осознал, что видел его фамилию на множестве статей в этой области. Оказалось, я познакомился с одним из специалистов мирового уровня в области компактных структур данных (succinct data structure). Невежество может завести очень далеко.

Что же такое компактные структуры данных? Если вы изучали в последние десятилетия computer science, то могли сталкиваться с ними, но мне не доводилось встречаться с ними в процессе работы программистом, а если и доводилось, то я сразу же о них забыл. Но я считаю, что эти структуры данных обладают потрясающими свойствами.

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

Я решил, что стоит немного о них рассказать.
Читать дальше →

Полезные ресурсы по Python, которые я собрал

Level of difficultyEasy
Reading time7 min
Views36K

Примерно два года назад я начал изучать Python и Django. В течение этого времени сохранял ссылки, которые считал полезными. Недавно решил структурировать их. Также стало интересно, а какие ресурсы считают полезными другие разработчики. В данной статье я собрал разнообразные ссылки по Python, которые сохранял, либо которые меня заинтересовали (внимание больше на web). Буду благодарен, если в комментариях поделитесь своими полезными ссылками.

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

Читать далее

Как я устроился в Амазон и перестал переживать за свой английский

Level of difficultyEasy
Reading time7 min
Views105K

Готовитесь к собеседованию за рубежом и переживаете за свой английский? Хотели бы работать в международной компании, но сомневаетесь, хватит ли языка? Не уверены, поймут ли ваш акцент? Тогда эта статья может помочь.

Меня зовут Андрей Столбовский, последние 5 лет я работал в Яндексе, а в прошлом году перешёл в Амазон и теперь работаю Software Development Manager в AWS Redshift – это мой первый полноценный опыт работы в международной компании. 

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

Итак, поехали. 

Поехали!

VPN через I2P (часть 1): wireguard & i2pd

Level of difficultyMedium
Reading time8 min
Views24K

Гайд о том, как гонять VPN через I2P. Полное описание серверной и клиентской конфигурации. Ловкость рук и гибкость ума — прошу под кат!

Читать

WireGuard и QUIC

Level of difficultyMedium
Reading time4 min
Views26K

Когда мы хотим защитить передаваемые данные, мы используем VPN. Но иногда хочется, чтобы и сам факт использования VPN, тоже был бы скрыт. Мы настолько переживаем за свои данные:)

Так как сейчас очень популярным стал WireGuard, он основан на UDP. А из популярных UDP протоколов, которые могут через себя прокачивать большой трафик, это QUIC. Это совмещение TCP и TLS, основанное на UDP. Поэтому естественной мыслью стала мимикрировать WireGuard трафик под QUIC трафик. Для этого пришлось изучить код WireGuard в ядре Linux. Код патча ядра Linux лежит на QUICWireGuard.

Читать далее

Миф о RAM

Level of difficultyMedium
Reading time5 min
Views19K

Миф о RAM — это верование о том, что память современного компьютера напоминает идеальную память с произвольным доступом. Кэш люди считают оптимизацией для малых данных: если они умещаются в L2, то будут обрабатываться быстрее; если нет, то тут уж ничего не поделаешь.

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

groups = [[] for _ in range(n_groups)]

for element in elements:

groups[element.group].append(element)

Он и в самом деле линеен (то есть асимптотически оптимален), и мы всё равно должны выполнять доступ к произвольным индексам, так что кэш здесь нам ни в чём бы не помог.

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

Читать далее

Защита схемы от переполюсовки, что может быть проще?

Level of difficultyMedium
Reading time15 min
Views49K
image
«Я не такая», «со мной этого точно не может случиться» — говорили они, но упорно продолжали пихать батарейки в пульт для телевизора не той стороной…

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

Содержание:



Всех неравнодушных к электронике прошу под кат!
Читать дальше →

256 цветов в терминале ⇒ уровень nightmare

Reading time2 min
Views61K


Я тут строю некоторый велосипед с длинным отладочным выводом в stdout и меня взволновал вопрос серьезной расцветки лога. Современные терминалы xterm умеют и любят 256 цветов, но вот люди, которые придумывали escape-последовательности для этой палитры, стреноженные обратной совместимостью и латентной склонностью к криптографической эмпирике, все сделали так, что у меня ушло несколько часов, чтобы со всем этим разобраться. Интернет тоже не изобилует подробными разъяснениями, как оно там устроено.
Вкратце, текст в иксовый терминал можно нынче выводить кучеряво. Я набросал некое подобие сервиса, типа визивига для генерации escape-последовательностей. Выбрал цвета, начертание шрифта — получи набор закорючек. Тех же, кому интересны потроха — прошу под кат.
Читать дальше →

Получение информации о системе и сети с помощью Python

Level of difficultyMedium
Reading time14 min
Views13K

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

Читать далее

Linux: долгий путь к ленивому вытеснению

Level of difficultyMedium
Reading time7 min
Views10K

В настоящее время планировщик работы с ядрами ЦП, действующий в ядре Linux, предусматривает несколько режимов вытеснения. В этих режимах предлагается целый ряд компромиссов между временем отклика и пропускной способностью системы. Ещё в сентябре 2023 года развернулась дискуссия о работе планировщиков, в результате которой была выработана концепция «ленивого вытеснения». Данная концепция упрощает планирование задач в ядре, при этом улучшая результаты. Какое-то время эта работа протекала тихо, но затем ленивое вытеснение было заново реализовано Питером Зайлстрой в виде этой серии патчей. Притом, что сама концепция с виду работает хорошо, здесь ещё немало требуется доделывать.

Читать далее

MTA-STS для Postfix

Reading time5 min
Views12K
MTA-STS — это предложенный стандарт RFC8461, вышедший из статуса черновика и официально опубликованный 26 сентября 2018 года. Этот стандарт предлагает механизм обнаружения возможности для использования полноценного TLS между почтовыми серверами, с шифрованием данных и аутентификацией сервера. То есть, этот стандарт практически полностью защищает от вмешательства в почтовый трафик между серверами.

Упрощённо, суть стандарта в следующем:

  1. Поддерживающие его почтовые сервисы публикуют политику (1 TXT-запись и 1 HTTPS-ресурс для каждого домена).
  2. Почтовые сервисы при отправке почты в другие домены производят обнаружение политики домена-получателя.
  3. Почтовые сервисы соединяются с почтовым сервером домена-получателя, применяя ограничения к TLS, задаваемые обнаруженной политикой, если таковая нашлась.

Существуют неплохие статьи (например), рассказывающие про сам стандарт и для чего он нужен, сравнивающие MTA-STS с другими аналогичными инициативами, и даже показывающие как составить и опубликовать политику. Но найти, как продвинуться дальше первого шага, оказалось не так-то просто.
Читать дальше →

Заточка кухонных ножей мусатом

Level of difficultyEasy
Reading time9 min
Views82K

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

Читать далее

Мне 34, я был в 65 странах, и у меня есть для вас лайфхак

Level of difficultyEasy
Reading time4 min
Views101K

Вы же попались на этот кликбейт?

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

За первый же месяц с ботом я купил перелёт в США и обратно в два раза дешевле стандартной цены. А сколько времени сберёг на мониторинг — не сосчитать. Поделюсь ссылками на мой проект в GitHub и названием бота. Вы сможете собрать похожее решение под свой запрос и летать в отпуск, испытывая меньше фрустрации от ценника на билеты и туры.

Читать далее

VPN: последний выпуск. Завтра об этом писать нельзя

Level of difficultyEasy
Reading time5 min
Views170K

Закрываем двери в свободный интернет: завтра, 30 ноября, вступает в силу закон №406-ФЗ запрещающий распространять информацию о способах обхода блокировок.

Кто знает о визитах на Pornhub?
- Какие именно данные сохраняют провайдеры о нас — с VPN и без.
- Что нового запретят обсуждать о VPN (и почему).
- VLESS — замена VPN, которую ещё можно упомянуть (пока).
- ТРИ способа как вычислить, что вы зашли через прокси или VPN.

Читайте, пока это ещё не заблокировали!

Читать далее

Структурированное логирование в Go с помощью Slog

Reading time22 min
Views32K

Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчиков Google Go наконец-то представила Slog — высокопроизводительный пакет для структурированного ведения логов в стандартной библиотеке Go. Мы перевели гайд о возможностях slog.

Читать далее

Скачиваем и смотрим YouTube на своём хостинге

Level of difficultyMedium
Reading time6 min
Views55K

У пользователей в РФ возникли затруднения с доступом к YouTube. Причины известны, как и варианты решения. Однако это битва кота и мыши: ТСПУ эволюционируют, и популярные инструменты часто перестают работать.

Чуть надёжнее использовать свою инфраструктуру в зарубежном дата-центре. Так можно скачать контент с YouTube на свой сервер, а оттуда раздать трафик внутри РФ любым удобным способом без всяких «замедлений».

Получается что-то вроде зарубежного прокси для YouTube. И это совершенно легально (пока).

Читать далее

Information

Rating
5,917-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity