Как стать автором
Поиск
Написать публикацию
Обновить
4
0.2

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

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

Утилити-функция для тривиальных однострочных выражений, это не очень нормально.

Обратите внимание, что даже сам Торвальдс сразу же делает оговорку: «Maybe you need to add a cast to make sure that b does not [blah-blah]». Допустить ошибку в этом тривиальном однострочнике проще, чем кажется. Вы все правила integer promotions наизусть помните, для всех возможных платформ?

Такой хелпер имеет право на существования в принципе, в некой кодовой базе. Да, он может противоречить видению Торвальдса, и тот волен не пропустить его на ревью — но к чему вся эта хамоватая экпрессия в публичной переписке?

Честно говоря, мне сложно сказать, для чего были придуманы битовые поля: на практике они практически бесполезны для битовых манипуляций и используются для этих целей крайне редко. Они не обещают даже конкретного порядка бит в памяти, но проблем с собой тащат достаточно (см. ниже) — маски и сдвиги оказываются проще, надёжнее и предсказуемей.

The following usages of bit-fields causes undefined behavior:

  • Calling offsetof on a bit-field. The following properties of bit-fields are unspecified:

  • Alignment of the allocation unit that holds a bit-field.

The following properties of bit-fields are implementation-defined:

  • Whether bit-fields of type int are treated as signed or unsigned.

  • Whether types other than int, signed int, unsigned int, _Bool, and [...] are permitted.

  • Whether atomic types are permitted.

  • Whether a bit-field can straddle an allocation unit boundary.

  • The order of bit-fields within an allocation unit (on some platforms, bit-fields are packed left-to-right, on others right-to-left).

https://en.cppreference.com/w/c/language/bit_field.html

Подсказки, файлы и софт изолированы на VM для обхода требований «расшарить экран».

Каким образом это может работать? Окно запущенной виртуалки точно так же попадает на скринкаст. Может быть, имелось в виду, что, наоборот, это Zoom или мессенджер запущен в виртуалке, а подсказывающий софт — снаружи?

Можно распознать через активные процессы на компьютере.

А каким образом вы получаете список активных процессов на компьютере собеседника?

Почему? Потому что Python использует ромбовидное наследование и алгоритм разрешения порядка поиска методов (MRO), основанный на линеаризации C3. [...]
Почему это важно? Потому что это тоже база.

Не соглашусь, что это такая уж база. Алгоритм C3 — не особенно интуитивный. Если дать вам граф наследования чуть посложнее, вы точно так же поплывёте. А в языках программирования он применяется не потому, что безумно хорош, а потому, что альтернативные подходы ещё хуже.

Само существование в питоне такого алгоритма — костыль. Это своего рода «алгоритм последнего шанса»: он описывает процедуру, при помощи которой интерпретатор сможет в произвольно сложном графе наследования вызвать хоть что-то хоть где-то более-менее математически корректным способом. В реальной практике следует не полагаться на этот порядок, а переопределить метод в наследнике и перевызвать в нём нужный унаследованный метод вручную.

Вообще говоря, выглядит как приемлемый вариант в случае, если вакансия не предполагает удалёнку.

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

Изучая сайт автора, заметил интересную вещь, о которой нет упоминания в статье: хотя утилита ProxyFyre опубликована под AGPL, библиотека ndisapi — под MIT, сам драйвер WinpkFilter, который и выполняет работу по перекладыванию пакетов куда надо, «is free for personal or educational use, including non-profit organizations».

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

Поддержку паранойю опасения предыдущего комментатора. Если я ничего не упустил, код самого драйвера Windows Packet Filter закрыт и увидеть его можно только за большие деньги, под лицензий MIT доступна только лишь библиотека-обёртка, проксирующая вызовы. Поэтому вам, как автору, недостаточно тут ответить «просто соберите из исходников».

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

Если у вас честный баш без требований совместимости с POSIX-шеллом, в этой ситуации очень удобно использовать массивы. Ваш пример я бы написал примерно так:

declare -ra options=(-l --sort=none)
ls "${options[@]}"

Можно и без declare -ra, это моя привычка везде явно ставить declare/local и делать переменные ридонли, если это возможно.

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

# It's not possible to pass arrays via environment. Falling back to a plain string.
# shellcheck disable=SC2086
ls ${MYSCRIPT_LS_OPTIONS:-}

По правде говоря, в статье с заголовком про «бэкап при помощи rsync и Btrfs» ожидал увидеть совершенно другой сетап. Что-то вроде такого:

  • средствами Btrfs делаем ридонли-снапшоты интересующих сабвольюмов,

  • затем c этих снапшотов спокойно, не отрываясь от работы делаем rsync-ом хороший, консистентный бэкап на удалённый сервер (или несколько серверов — данные зафиксированы и не изменятся между проходами).

Тут rsync можно заменить на restic и будет вообще хорошо: дедупликация, сжатия, шифрование из коробки. Плюс нативная поддержка S3 и Backblaze (и многих других облачных провайдеров — посредством rclone).

Хотя Sanoid/Syncoid — довольно популярная тулза (сам тоже пользуюсь), справедливости ради, я бы предпочёл не запускать от рута что-то, написанное на перле или других скриптовых языках. Страшновато: Perl и его стандартная бибилиотека — это много кода, где что-то может пойти не так.

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

Не понимаю, по какому принципу вы выбираете, когда поставить кавычки, а когда нет — как по мне, подстановки переменных нужно квотировать тотально, а не выборочно. Также имеет смысл проверять все свои скрипты через ShellCheck.

Я не был пионером, но дежурства по классу и субботники, конечно же, застал.

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

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

Увы, вы ошиблись лет на двадцать.

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

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

Я спорю с тем, что она там нужна вузовского уровня.

Вот только чётность и нечётность функций и синус в нуле — это не вузовский уровень. И даже ряд Тейлора — не прям вузовский уровень, его в профильных классах проходят.

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

Запрос Double Click в принципе довольно странен и может насторожить

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

В уже упомянутом выше GrapheneOS есть возможность явно указать контакты, которые увидит приложение, называется «Contact Scopes». При этом приложение будет думать, что ему выдан доступ ко всей адресной книге. Ещё есть «Storage Scopes» для контроля доступа к файлам.
https://grapheneos.org/usage#contact-scopes
https://grapheneos.org/usage#storage-scopes

Буду безустано говорить,

А зачем?

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

что концепция операционной системы морально устарела

Скажите, а что такое «концепция операционной системы»? Вам до сих пор не даёт покоя микроядро, что ли? И даже если концепция действительно устарела и со временем придёт новая, будет откуда перетащить драйверы и софт.

А, вы про такие VPN. В моей голове дефолтные VPN-протоколы — это OpenVPN и Wireguard, и я очень удивился узнать, что они вдруг стали потенциально опасными.

1
23 ...

Информация

В рейтинге
4 914-й
Откуда
Воронеж, Воронежская обл., Россия
Зарегистрирован
Активность