Обновить
59
0.1
Shader, a.k.a@Hesed

Администратор, программист

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

Интересно, как выбирался диапазон? Какую то статистику использования собирали?

По официальной документации: "The values for NSMALLPOSINTS and NSMALLNEGINTS are chosen based on the most commonly used integers in typical Python programs".

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

И вариант для звезды героя-героя: будет ли интернирование для строки "интернирование"?

Кроличья нора на самом деле довольно глубока. Пример из моего комментария выше сработает в интерактивном интерпретаторе. Однако, если создать файл с таким же содержанием a=1 b=1 c=1111 d=1111 print(a is b) print(c is d), то ответ будет... True True. И это интересный вопрос для продолжения обсуждения.

Причина тому кроется в том, что в интерактивном режиме каждая строка обрабатывается отдельно в момент ввода, тогда как файл будет обработан целиком. И если сделать dis.dis() и func_code.co_consts() на функцию, которая содержит кусок кода выше, то будет видно, что LOAD_CONST, STORE_FASTинстанцируют только один объект.

---

Что касается интернирования строк, то я лично такой вопрос на собеседованиях не встречал и сам не задавал (впрочем, вопрос про целочисленные приколы я тоже не задавал). Но оно есть и в нём интересно покопаться.

>>> a = 'hello'
>>> b = 'hello'
>>> a is b
 True
>>> c = 'hello world'
>>> d = 'hello world'
>>> c is d
 False

Интернируются строки длиной до 4096 (лимит, опять же менялся), не содержащие пробелы, символы за пределами буквенного диапазона ascii и т.п. Поэтому "интернирование" не попадает и интернировано не будет, а вот английское слово сработает - дискриминация :). При этом подчёркивание интернируется, а дефис нет. Помнить всё это бессмысленно, практической пользы это несёт мало, разве что показывает, что кандидат копался под капотом Python и умеет пользоваться dis.dis().

В довесок к цепочным присваиваниям и тождественности любят спрашивать почему a и b ссылаются на один объект, а c и d на разные, хотя объявлены они одинаково.

>>> a = 1
>>> b = 1
>>> c = 1111
>>> d = 1111

a is b # True
c is d # False

>>> id(a)
140712275936168
>>> id(b)
140712275936168

>>> id(c)
1894793473328
>>> id(d)
1894793471632
  • Ответ: может что-то про интернирование? И вообще нефиг использовать is для проверки скалярных значений.

  • Ответ со звёздочкой: CPython заранее создаёт объекты для чисел в определённом диапазоне. Эдакий кэш.

    • Ответ с двумя звёздочками, если называется диапазон (до 3.13 включительно это от -5 до 256).

    • Ответ со звездой героя: диапазон менялся по ходу разработки, от -5:128 до текущего -5:256, а скоро он будет от -5 до 1024.

Если покопаться в недрах ПО для игровых устройств, можно потерять веру в человечество. Логитековский G-Hub в какой-то момент у меня стал затирать настройки при обновлении и я искал, как их бэкапить. Нашёл. В SQLite файле, в котором есть одна единственная таблица с одним единственным текстовым полем, лежит конфиг в виде JSON'а. Смерть кощеева какая-то.

А поверх click'а можно воткнуть Trogon и одним декоратором сконвертировать CLI-приложение в удобный TUI (текстовый GUI), с дропдаунами, валидаторами и т.п., который к тому же обратно совместим с консольным вызовом, т.е. можно вызывать в "консольном" виде, или в виде интерактивного интерфейса.

Два варианта: форвардинг и рекурсия.

Censor2005 показал пример форвардинга. Но, возможно, вопрос о рекурсии? Если вы настроили зону myfamily.ru на своём DNS сервере и хотите, чтобы при этом ваш сервер отвечал также на запросы к нему google.com, yandex.ru и прочих доменных именах, которые он не обслуживает, то нужно его настроить рекурсивным.

acl trusted {
  # обязательное ограничение, кто имеет право запрашивать рекурсию
  x.x.x.x/zz;  # ipv4 подсеть в cidr нотации
};
view recursive {
  match-clients      { trusted; };
  match-destinations { trusted; };
  recursion yes;
  # оставшаяся часть конфигурации, зоны и т.п.
  <...>
};
view public {
  recursion no;
  # оставшаяся часть конфигурации, зоны и т.п.
  <...>
};

Если DNS не обслуживает публично никого, а используется только внутри своей локалки (домашняя лаборатория), то view можно пренебречь и делать просто options{}. Категорически нельзя позволять DNS-серверу рекурсивно обслуживать всех подряд - зафлудят и будут использовать, как платформу для DNS-amplification атак.

К моменту получения высшего образования уже имел около 10 лет суммарного опыта в IT, из них последние 7 последовательно рос в одной компании. Дорос до того момента, когда вышка начала требоваться по закону, чтобы занять руководящую должность.

Меня до сих пор накрывают флэшбеки отвот этого "учиться учиться" у людей с околонулевыми практическими опытом и навыками. Единственный преподаватель, с которым было интересно работать, ушёл спустя полтора года, т.к. его запинали за то, что гонял по реальным задачам, а это было сложно и "не по программе". До сих пор сомневаюсь, окупились ли эти финансовые и временны́е затраты.

Последние три строки в резюме - Huawei, T-Mobile, Vodafone. Нигде не спрашивали вышку - везде требовали реальные навыки. Единственный раз, когда у меня таки запросили диплом - при участии в тендере ESA (европейского космического агентства). Ну и да, для руководящих должностей в некоторых странах наличие ВО условно требуется.

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

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

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

Недавно пришлось искать утечку памяти в крайне отбитом на все байты lua скрипте в haproxy. Кастомный скрипт проверял специфические поля в сертификатах и потихоньку утекал. До этого lua использовал в скриптовании логики NPC в фановых игровых проектах, а тут такое. Столкнулся с тем, что нет единого удобного подхода к написанию юнит-тестов. Я понимаю, что язык немного про другое, но из-за портативности его куда только не запихивают.

Nginx Proxy Manager: веб-инструмент для управления обратными прокси с автоматизацией сертификатов SSL

NPM умеет "автоматизировать сертификаты" (формулировка сама по себе странная, имеется в виду автоматическое продление) только для Let's Encrypt, т.е. прямая зависимость от внешнего провайдера. Для внутренних ресурсов оно далеко не всегда нужно, своего собственного PKI хватает за глаза.

Последний фотошоп уже требует.

Adobe Photoshop 2025, v26.5
Adobe Photoshop 2025, v26.5

Лечится патчингом исполняемого файла и одной DLL'ки, то есть нет никакой объективной причины требовать обновление системы - после патча программа работает без проблем, крашей и зависаний.

Лет -дцать назад патчили экзешники, для кряка и сброса триалов. В 2025-м приходится патчить лицензионный софт.

И тут внезапно Хабр. Без логина, простым habr.com/ru/ habr.com/en/ я не могу переключить язык, потому что меня молча редиректит на "угадываемую" локаль. Обязательно надо ткнуть в не особо интуитивно-понятную иконку с глазиком, найти там "настройки ленты / настройки интерфейса" и только тогда язык соизволит переключиться.

Что хуже, без шаманства с настройкой, даже по полной ссылке на статью, содержащей /ru/, меня перекинет на /en/. Что может быть более явным указанием желания видеть контент на определённом языке, чем указание его в URL, зачем этот редирект.

Имхо, единственное реальное преимущество git switch по сравнению с git checkout, что свитчом нельзя откатить файл. Но я не припомню, чтоб git checkout branchname мне ломал какой-либо файл, который по случайности носил такое же имя.

В статьях встречал, что, мол switch понятнее документирован и даёт более читаемые ошибки для новичков. Ну вот, новичку, что pathspec не будет понятен, что refernce. Документация на git-scm выдержана в классическом стиле.

git checkout foo
error: pathspec 'foo' did not match any file(s) known to git

git switch foo
fatal: invalid reference: foo

Так что продолжаю использовать checkout и всем рекомендую не плодить сущностей.

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

Поэтому многие квакерские лиги вернулись к Q3/QL и вполне себе живут. SteamCharts показывают абсолютно одинаковый онлайн для обеих игр (Champions vs Live), что довольно показательно. Если SyncError сдержит слово и у "чемпионов" появится возможность хостить собственные сервера, может быть это подарит игре второе дыхание, но верится слабо, "беседка" угробила франшизу с одной из самых преданных хардкорных фанбаз.

Что за классификация "по Кожемякину"? Похоже на галлюцинацию ИИ, который попытался срастить все возможные типизации от соционики и энеаграммы до характерологических типов Леонгарда или Личко. Или укажите ссылку на классификацию, или сделайте сноску, что это такое.

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

Приятный и юзабельный может. Но немного устаревший.

То есть по Вашему стоит принести юзабельность и привлекательность в угоду моде? Наверное, также стоит как можно скорее переписать 145 тысяч строк на С++ на электрон, ведь это современно </sarcasm>

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

Учат, но не на тех и не тому. Например, недавно наши менеджеры узнали про диаграмму Липпитт-Кностер (Mary Lippitt, Timothy Knoster), которая описывает негативные реакции на внедряемые изменения. И ничтоже сумняшеся решили, что её можно применять при внедрении изменений в ПО. Мол, если есть сопротивление внедряемым изменениям, то значит не хватает мотивации.

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

Спасибо за эту новость. Искренне, без сарказма.

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

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

Поэтому - спасибо ещё раз. И, наверное, броадкастом, спасибо аудитории, что не скатилась в пикабу и дтф.

Согласен - мне помогло отсутствие кириллической раскладки на клавишах. Как только опускал взгляд вниз - впадал в ступор. Заставлял себя смотреть только в экран и доверять мелкой моторике и мышечной памяти.

Как носитель - поддерживаю использование клавиш-модификаторов. Для этого не нужен софт, раскладки поддерживают клавиши-модификаторы или dead key. В латышском это или модификатор удержания правый ALT или dead-key ' апостроф. В литовском же вынесли все буквы с диакритикой на цифровые клавиши, и чтобы ввести цифру нужно удерживать ALT, а чтобы ввести символ под цифрой - одновременно ALT и Shift.

Поэтому выделенные клавиши под символы куда менее удобны, чем модификаторы и dead key - их банально не хватает, и их размещают в неинтуитивных местах. Или, как в немецком, меняют расположение букв. Минус модификаторов в том, что у одной буквы может быть несколько диакритических знаков (литовские ū ų, например), значит нужны разные модификаторы.

Но к ним можно привыкнуть. Я настолько привык писать с модификаторами, что так и не смог приучиться к литовским цифрам и... сделал свою раскладку. Потом пошёл дальше и сделал такую же раскладку для немецкого.

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

Отвратительный АБС пластик на кейкапах, о которых в статье умалчивается, скромно называя колпачки "пластиковыми". За АБС в клаве за 300 евро (и невозможность нормальной замены или ремонта) надо подвергать остракизму.

Я очень люблю низкопрофильки со времён logitech ultrax, но корсары зашли слишком далеко. Единственная их киллер-фича - это потрясающее время отклика по беспроводному соединению. Во всём остальном, низкопрофильные Keychron K5 ничуть не хуже, куда дешевле, может быть модифицирована и отремонтирована.

Недавно поймал проблему с Аместердамским временем UTC+00:20. Эта таймзона существовала до 1940го года, поэтому абонент, рождённый до этого года, получал очень хитрую калькуляцию в одном из бизнес-правил. Проблема решилась обновлением tzdata, а на вопрос "почему 20 минут-то?" голландцы пояснили, что "всегда хотели быть хоть немного впереди этих заносчивых британцев".

1
23 ...

Информация

В рейтинге
3 087-й
Откуда
Даугавпилс, Латвия, Латвия
Зарегистрирован
Активность

Специализация

Системный инженер, DevOps-инженер
Ведущий
Разработка программного обеспечения
Базы данных
PHP
Python
DevOps
Системное администрирование
Linux
Сетевые технологии
Проектирование архитектуры приложений