Как стать автором
Обновить
Just Habra User @justhabrauserread⁠-⁠only

Пользователь

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

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Уровень сложностиСредний
Время на прочтение46 мин
Количество просмотров241K

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Всего голосов 445: ↑437 и ↓8+489
Комментарии371

Ограничения в телеграм-бот (Bot API), о которых никто не расскажет

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

Привет! Меня зовут Оля, я программист учебного центра компании «Тензор».

В декабре 23-го мне поступила творческая задача разработать телеграм-бот для проведения новогоднего марафона-тренинга по личностному росту.

В этой статье расскажу о проблеме, с которой столкнулась при разработке телеграм-бота. Разберем ошибку 429 (Too Many Requests) и лимиты на доступ к API.

Читать далее
Всего голосов 78: ↑77 и ↓1+85
Комментарии37

Корутины C++ для чайников: пишем асинхронный веб-клиент

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров27K

Написать этот материал меня побудило... отсутствие хороших статей по корутинам в C++ в русскоязычном интернете, как бы странно это не звучало. Ну серьезно, C++20 существует уже несколько лет как, но до сих пор почти все статьи про корутины, что встречаются в рунете, относятся к одному из двух типов. Или обзор начинается с самых глубин и мелочей, пересказывая cppreference, а потом автор выдыхается и все сводится к "ну а дальше все понятно, возьмите и примените это в своем коде", что напоминает известную картинку с совой. Либо иногда в статьях рассматривается применение корутин на примере генераторов, и этим все и ограничивается. Но, давайте будем честны, генераторы — это замечательно, но за все время моей многолетней карьеры разработчика я, вероятно, делал что‑то подобное генераторам разве что разок, в то время как асинхронный ввод‑вывод приходится использовать почти в каждом проекте. И поэтому меня гораздо больше интересует реализация асинхронного ввода‑вывода с использованием корутин, а не генераторы. Поэтому пришлось разбираться во всем самому.

Читать далее
Всего голосов 55: ↑53 и ↓2+64
Комментарии34

Самое понятное объяснение Специальной теории относительности

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров120K

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

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

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

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

Иногда лучше делать, а не планировать

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

Пожилой рабочий на строительстве «Эмпайр-стейт-билдинг» в 1930 г., источник. Вся стройка от подготовки стройплощадки до торжественного запуска лифтов заняла 410 дней

В последнее время часто приходится слышать про новую модель управления — избыток административных кадров, не имеющих отношения к основному производству. К сожалению, это особенно ярко проявляется в IT-индустрии, где количество менеджеров среднего звена сильно превышает стандартные показатели. Например, в компании Google доля менеджеров уже достигла 15% от общей численности персонала, то есть по одному менеджеру на пять-шесть работников. Это заметно превышает средний показатель в сфере услуг 1 к 15.

Избыток менеджеров в компании ведёт к негативным последствиям:

  • засилье KPI с последующей деградацией продукта, которое по менеджерской логике должно увеличивать DAU;
  • деградация корпоративной культуры из-за офисных интриг и карьеризма;
  • снижение продуктивности разработчиков из-за бесконечных совещаний, созвонов, отчётности и использования ПО для «повышения эффективности» (таск-трекеры, тайм-трекеры, календари и проч.);
  • цифровое истощение и выгорание сотрудников.

Это стандартные издержки от переизбытка менеджеров. Иногда даже единственный менеджер приносит больше вреда, чем пользы.
Читать дальше →
Всего голосов 149: ↑138 и ↓11+164
Комментарии103

Django, PostgreSQL, Gunicorn/uWSGI, Nginx

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

Подробное описание шагов при деплое web-проекта на Django с PostgreSQL, Nginx, Gunicorn.

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

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

Настройка C++ проекта c OpenMP. Обертывание С++ для Python с помощью pybind11 и CMake

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.9K

В статье описан практический пример настройки проекта на языке C++ с использованием, в качестве примера, библиотеки для многопоточных вычислений OpenMP , а также дальнейшее обёртывание для использования в проектах написанных на Python при помощи библиотеки Pybind11. В качестве системы сборки используется CMake. Основное внимание уделено именно сборке проекта. В качестве инструмента обёртывания используется библиотека pybind11, в качестве системы сборки CMake.

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

Как установить Windows 11

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

Да, статья о том, как установить Windows 11 правильно. Этот процесс нынче сопровождается таким количеством шаманских плясок, что ей-богу, проще Arch устанавливать. Решил вот поместить все познания по этому вопросу из головы в статью.

Читать далее
Всего голосов 120: ↑98 и ↓22+99
Комментарии238

Почему ваш проект тонет или как начать фиксировать требования, когда у вас ничего нет

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров9.5K

В какой-то определенный момент после старта нового проекта, когда «временный» MVP почти готов, весь интересный код уже написан, пакеты еще свежие и обновляются, команды начинают замедляться в Time to Market.

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

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

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

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

Давайте разбираться
Всего голосов 16: ↑14 и ↓2+17
Комментарии26

Затыкаем рот Windows 10

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


Windows 10 очень любит Интернет. Обновления, синхронизации, телеметрия и ещё куча разной другой очень нужной ЕЙ информации постоянно гуляет через наши сетевые соединения. В «стандартном» сценарии использования, когда Windows 10 управляет домашним или рабочим компьютером, это, в общем-то, терпимо, хотя и не очень приятно.

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

Для того чтобы подобного не происходило, необходимо «заткнуть рот Windows», то есть сделать так, чтобы она самостоятельно перестала «стучаться» в Интернет, устанавливать обновления и заниматься прочими непотребствами. Вот именно этим мы с вами и займёмся.
Читать дальше →
Всего голосов 170: ↑160 и ↓10+196
Комментарии309

Devuan LXC + Runit native boot

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

Runit уже много лет пленяет пылкие сердца и умы любителей прекрасного и если вас тоже подташнивает от коричневых оттенков мэйнстримных облаков, то слушайте. Я расскажу о своём опыте использования runit в режиме native boot, который делает lightweight контейнеры по-настоящему lightweight.

Ведь как я делал раньше? Деплоил контейнер debian, отключал мерзкий бинарный лог в /etc/systemd/journald.conf, потом ставил вменяемый rsyslog, который тянул logrotage и cron, а потом выискивал свои крошечные поделки в списке процессов среди всех этих systemd, cron, rsyslogd, agetty - вот этот agetty я вообще победить не мог.

Вас бы не задолбало такое безобразие? Я-то терпеливый, но и меня тоже достало.

Devuan. Только Devuan.

А про native boot в runit вообще ни один из известных мне поисковиков ничего не может сказать, и никаких упоминаний нет на wiki всех этих gentoo, void, artix, где runit активно используется. И даже на этом сайте ни слова, хотя поиск по runit весьма познавателен, если отфильтровать весь спам про лошадиный спорт.

Я восполню этот пробел
Всего голосов 7: ↑5 и ↓2+6
Комментарии11

OpenConnect: недетектируемый VPN, который вам понравится

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров291K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Всего голосов 273: ↑272 и ↓1+323
Комментарии353

Асинхронный python без головной боли (часть 3)

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

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

И снова здравствуйте
Всего голосов 14: ↑14 и ↓0+14
Комментарии6

Сокровища HTML: 7 тегов, которые упростят вам жизнь

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

Все мы знакомы с широко используемыми HTML тегами, такими как <div>, <p>, <a>, и <img>. Однако, существуют HTML - теги, которые могут упростить жизнь, и вместо написания дополнительного кода, выполнят всю работу :)

Читать далее
Всего голосов 62: ↑57 и ↓5+59
Комментарии28

Как департамент утилизации CPU превратился в департамент экономии железа, выдерживающий нагрузку в 1 млн RPS

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

Привет, меня зовут Мария, когда-то я работала на шахте, потом на заводе, а 3.5 года назад пришла в Ozon Tech. Сейчас я старший Golang-разработчик в команде product-facade. Это самый высоконагруженный сервис маркетплейса, но так было не всегда.

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

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

Примитивы синхронизации в Python Asyncio: Исчерпывающее руководство

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

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

Что было дальше?
Всего голосов 15: ↑14 и ↓1+15
Комментарии4

Сбер. Как некрасиво поступить на конкурсе красоты

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

Хабр - не жалобная книга, я знаю. Но тут история про код, с примерами, разбором антипаттернов и всё такое, поэтому я рискну.

Всё началось, когда я узнал про конкурс красоты кода от Сбера. Я как раз хотел поучаствовать в каком-нибудь эпичным конкурсе, а тут как раз он мне и подвернулся, тем более что я - тот человек, которому есть что рассказать про красивый код. Я даже целую статью запилил о том, как писать красивый и понятный код. Так что что я решил, что в данном случае мои шансы на победу - в отличие от остальных конкурсов - всё же больше 0%. Кроме того, я хотел выступить на конференции PiterPy (спойлер: хрен мне), чтобы рассказать там про красивый код и всё такое, поэтому участие в конкурсе и сравнение результатов было бы классным подспорьем.

Что же пошло не так?
Всего голосов 235: ↑220 и ↓15+268
Комментарии94

Простая контактная сварка для мелких точных работ

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров16K

Основное назначение прибора – простое и быстрое жаростойкое соединение «насквозь» нетолстых листов и проволок из разных металлов для внутренней арматуры самодельных электровакуумных приборов (ЭВП). Кроме того, аппарат может пригодиться в ювелирном деле, при альтернативном электрорадиомонтаже или изготовлении некрупных корпусов, кожухов, экранов и т. п. К винтовым клеммам прибора может быть подключен выносной инструмент. Сварочный аппарат использует плоские легкосъёмные электроды - гнутые проволочные для мелочей, массивные для деталей крупнее - выпиленные и сформованные из нетонкого листа меди или её сплавов. Аппарат опробован максимум – на листах оцинкованной кровельной стали 0,45 и 0,5 мм. Точная настройка режима позволяет работать с тонкими деликатными материалами и с высокой повторяемостью.

Итак. Размеры свариваемых деталей невелики и при проектировании применен ряд решений для популярной и где-то близкой (тонкая никелевая лента), в последнее время, забавы – соединения элементов-аккумуляторов пальчикового типа в батареи. Такие приборы обычно собирают на базе удобного для перемотки высоковольтного трансформатора от микроволновой печи. Больше того, существует ряд недорогих и доступных встраиваемых модулей для управления такой сваркой (Фото 2).

Проектирование

Самый толстый предполагаемый материал для сварки – сталь 0,5 мм толщиной, самый тонкий – на порядок меньше, т. е. требуется значительный диапазон регулировки и точная выдержка. Здесь, применил готовый фабричный контроллер китайского производства (Фото 2).

Полюбопытствовать
Всего голосов 54: ↑54 и ↓0+54
Комментарии17

Как вырастить солёную пирамидку

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

Да кому нужна эта обычная скучная соль? Превращаем мелкие белые крупинки в потрясающие пирамидальные кристаллы в домашних условиях.

Читать далее
Всего голосов 185: ↑182 и ↓3+226
Комментарии72

Истории из жизни вредоносов: прячемся в автозагрузку ОС Windows

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров12K

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

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

Информация

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