Pull to refresh
Just Habra User @justhabrauser read-only

User

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

Level of difficulty Easy
Reading time 7 min
Views 37K

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

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

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

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

Это стандартные издержки от переизбытка менеджеров. Иногда даже единственный менеджер приносит больше вреда, чем пользы.
Читать дальше →
Total votes 178: ↑167 and ↓11 +156
Comments 100

Django, PostgreSQL, Gunicorn/uWSGI, Nginx

Level of difficulty Hard
Reading time 12 min
Views 9.5K

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

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

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 4

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

Level of difficulty Medium
Reading time 10 min
Views 2.8K

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

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 6

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

Level of difficulty Easy
Reading time 10 min
Views 57K

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

Читать далее
Total votes 143: ↑121 and ↓22 +99
Comments 234

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

Level of difficulty Medium
Reading time 10 min
Views 8.5K

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

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

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

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

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

Давайте разбираться
Total votes 21: ↑19 and ↓2 +17
Comments 26

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

Level of difficulty Hard
Reading time 33 min
Views 89K


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

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

Для того чтобы подобного не происходило, необходимо «заткнуть рот Windows», то есть сделать так, чтобы она самостоятельно перестала «стучаться» в Интернет, устанавливать обновления и заниматься прочими непотребствами. Вот именно этим мы с вами и займёмся.
Читать дальше →
Total votes 217: ↑207 and ↓10 +197
Comments 304

Devuan LXC + Runit native boot

Level of difficulty Easy
Reading time 4 min
Views 1.9K

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 весьма познавателен, если отфильтровать весь спам про лошадиный спорт.

Я восполню этот пробел
Total votes 10: ↑8 and ↓2 +6
Comments 11

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

Level of difficulty Medium
Reading time 15 min
Views 192K

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

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

Читать далее
Total votes 325: ↑324 and ↓1 +323
Comments 333

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

Level of difficulty Easy
Reading time 10 min
Views 11K

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

И снова здравствуйте
Total votes 14: ↑14 and ↓0 +14
Comments 5

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

Level of difficulty Easy
Reading time 7 min
Views 21K

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

Читать далее
Total votes 70: ↑65 and ↓5 +60
Comments 28

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

Level of difficulty Easy
Reading time 26 min
Views 31K

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

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

Читать далее
Total votes 128: ↑128 and ↓0 +128
Comments 96

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

Level of difficulty Hard
Reading time 14 min
Views 6.3K

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

Что было дальше?
Total votes 17: ↑16 and ↓1 +15
Comments 4

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

Reading time 13 min
Views 51K

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

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

Что же пошло не так?
Total votes 301: ↑286 and ↓15 +271
Comments 93

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

Level of difficulty Medium
Reading time 6 min
Views 12K

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

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

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

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

Полюбопытствовать
Total votes 54: ↑54 and ↓0 +54
Comments 17

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

Reading time 11 min
Views 43K

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

Читать далее
Total votes 232: ↑229 and ↓3 +226
Comments 72

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

Level of difficulty Medium
Reading time 6 min
Views 6.5K

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

Читать далее
Total votes 12: ↑11 and ↓1 +10
Comments 7

Преобразование markdown в pdf на Python

Level of difficulty Easy
Reading time 1 min
Views 4.4K

Каждому, кто ходил извилистой тропкой автоматической генерации pdf из markdown файлов ведомы связанные с этой задачей пеньки решения: Pandoc, LaTex, wkhtmltopdf и т.п.

Хочу поделиться с сообществом новым (по крайней мере для меня) вариантом решения этой задачи в Python.

Этот вариант имеет следующие плюсы.

Читать далее
Total votes 9: ↑6 and ↓3 +3
Comments 11

Многопоточность в Python: очевидное и невероятное

Level of difficulty Medium
Reading time 4 min
Views 27K

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

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

Читать далее
Total votes 44: ↑41 and ↓3 +38
Comments 16

Настраиваем двухступенчатый WireGuard для выхода из страны

Level of difficulty Medium
Reading time 4 min
Views 40K

У Wireguard есть немало прекрасного, включая его простоту реализации, скорость и минималистичные клиенты, которые не вызывают проблем у пользователей.

В начале августа некоторые интернет операторы и провайдеры начали блокировку протокола WireGuard в РФ по его рукопожатию.

Лично испытывал блокировку у Мегафон и Теле2, но не заметил у Ростелеком. VPN по-прежнему работал через последнего.

Очень не хотелось отказываться от Wireguard в пользу прокси-серверов в духе VLESS+TLS-Vision, в виду того, что все наши пользователи уже сильно привыкли именно к Wireguard.
Поэтому вариант с кардинальной сменой клиентского софта не рассматривался.

Поскольку трафик Wireguard блокируется только на зарубежные адреса было принято решение добавить еще один хоп в систему, а начальное подключение осуществлять к серверу в РФ.

Читать далее
Total votes 53: ↑53 and ↓0 +53
Comments 50

Windows — причина медленного интернета

Level of difficulty Easy
Reading time 4 min
Views 99K

Если вы столкнулись с «особой» проблемой медленного интернета и никакие танцы с бубном вам не помогают, то это статья для вас.

Провайдер, роутер, интернет-кабели, rg-45, обжимка, cat5e, порты, драйвера, программы уменьшающие скорость, утилиты, вирусы, настройки сетевого адаптера — это не какие-то страшные слова, на самом деле это всё не причина замедления интернета. В случае, если вы прошли всю эту цепочку и ничего не изменилось, тогда читайте дальше.

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

Читать далее
Total votes 167: ↑161 and ↓6 +155
Comments 314

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity